Уведомление Apple Push-Невозможно вызвать обратный вызов - PullRequest
2 голосов
/ 05 октября 2009

Я просто пытался получить deviceToken из своего приложения для iPhone с помощью службы push-уведомлений Apple. У меня нет никакой реализации на стороне сервера в настоящее время. Я создал идентификатор приложения, получил сертификат SSL, профиль обеспечения с APN и вызов

- (void)applicationDidFinishLaunching:(UIApplication *)application {
//view init and add sub view to window
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];
}

метод. Когда я выполняю приложение, оно всплывает в окне действия, чтобы разрешить Push-уведомление (означает, что мой запрос на регистрацию APN работает), но мой обратный вызов не выполнен. Не вызывается ни didRegisterForRemoteNotificationsWithDeviceToken , ни didFailToRegisterForRemoteNotificationsWithError ? Кто-нибудь может помочь мне решить проблему? Ниже приведены мои callbacs для справки.

    - (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {

            UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"APNClient" message:@"Entered into Error Method" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
            [myAlert show];
            [myAlert release];
            NSLog(@"Error in registration. Error: %@", err);

        }
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {
    UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"APNClient" message:@"Got the deviceToken..!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
    [myAlert show];
    [myAlert release];        
}

Ответы [ 4 ]

3 голосов
/ 05 октября 2009

Приложение должно использовать:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

не

- (void)applicationDidFinishLaunching:(UIApplication *)application
2 голосов
/ 21 декабря 2010

Я обнаружил, что для PUSH-уведомлений требуется, чтобы в вашей сети был открыт порт 5223 (если вы используете WIFI) или иное соединение для передачи данных сотовой связи.

Я столкнулся с той же проблемой в моей домашней сети, и мне пришлось открыть порт вручную в беспроводном маршрутизаторе.

0 голосов
/ 12 сентября 2011

Я тоже самое и буквально часами пытался докопаться до сути. В конце концов, я решил, что мой iPod touch просто не смог подключиться к Apple, чтобы получить маркер устройства, но это не имело никакого отношения к брандмауэру. Вместо этого проблема, похоже, заключалась в том, чтобы установить какое-то (TLS?) Зашифрованное соединение в сочетании с часами устройства, которые были сброшены до 1970 .

Обновление времени исправило все. Надеюсь, это поможет кому-то там:).

0 голосов
/ 06 октября 2009

Обратные вызовы выглядят хорошо, так как вы говорите, что должны получить обратный вызов вскоре после совершения регистрационного звонка (откуда угодно).

Это кажется глупым вопросом, но просто чтобы быть уверенным - вы делегируете методы в классе делегата приложения?

Если это так, я просто не понимаю, почему ваши методы не будут вызываться. Я вижу там заявления NSLog, но вы пытались установить точку останова на входе? И вы тестируете на устройстве, а не на симуляторе, верно?

...