为什么在生产模式下某些设备上无法生成APNS设备令牌?

时间:2014-08-21 04:52:48

标签: objective-c iphone apple-push-notifications

我开发了一个带推送通知服务的聊天应用程序。我在开发模式和adhoc模式下测试了它。每个设备都成功生成设备令牌。但在生产模式下,报告显示某些设备无法注册到APNS。我不知道它发生的原因。我正在测试的每个设备都已成功注册到APNS,但某些设备无法注册。有人有想法吗?我被困住了,无法找到背后的原因。我注册APNS的代码是 -

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

  [[UIApplication    sharedApplication]registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeBadge|UIRemoteNotificationTypeSound ];
  // Handle launching from a notification
  UILocalNotification *locationNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
  if (locationNotification) {
    // Set icon badge number to zero
    application.applicationIconBadgeNumber = 0;
  }

  //some other code//

  return YES;
}

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken: (NSData *)deviceToken
 {
 globalManager.deviceToken = [[[[deviceToken description]
                            stringByReplacingOccurrencesOfString: @"<" withString: @""]
                           stringByReplacingOccurrencesOfString: @">" withString: @""]
                          stringByReplacingOccurrencesOfString: @" " withString: @""];


 }

-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:  (NSError *)error
 {
  globalManager.deviceToken=nil;
  NSLog(@"fail reg");
 }

1 个答案:

答案 0 :(得分:0)

正如@Andrey在上面的评论中指出的那样,你应该检查传递给你的app appate application:didFailToRegisterForRemoteNotificationsWithError:的错误。它可能包含失败的原因。

此类失败的原因可能包括不允许您的应用使用推送通知,网络问题以及其他内容的用户。