2009-10-05 3 views
2

Я просто пытаюсь получить DeviceToken из своего iPhone-приложения с помощью Apple Push Notification Service. У меня пока нет реализации на стороне сервера. Я создал идентификатор приложения, получили SSL сертификат, предоставление профиля с APN и вызоваУведомление Apple Push-Notable to callback didRegisterForRemoteNotificationsWithDeviceToken

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

метод. Когда я выполняю приложение, он открывает окно действия, чтобы разрешить Push Notification (означает, что мой запрос на регистрацию 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];   
} 

ответ

3

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

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

не

- (void)applicationDidFinishLaunching:(UIApplication *)application 
+0

zaph, Спасибо за ваш ответ. Но в документе Apple четко сказано, что - applicationdidFinishLaunchingWithOptions будет использоваться, когда вы работаете с приемом сообщений. Я еще пытаюсь получить deviceToken в первую очередь. – engineer

+0

Apple dpcumentations заявляет: рекомендуется использовать этот метод вместо applicationDidFinishLaunching :. – zaph

-1

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

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

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

2

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

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

0

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

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

Смежные вопросы