【问题标题】:Why APNS device token could not be generated on some device in production mode?为什么在生产模式下的某些设备上无法生成 APNS 设备令牌?
【发布时间】:2014-08-21 04:52:47
【问题描述】:

我开发了一个带有推送通知服务的聊天应用程序。我已经在开发模式和临时模式下对其进行了测试。每个设备都成功生成设备令牌。但是在生产模式下,报告说某些设备无法注册到 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");
 }

【问题讨论】:

  • 为什么不看看传递给 didFailToRegisterForRemoteNotificationsWithError 的错误?它会告诉你原因
  • 好的,如果我在日志中打印该错误。那我怎么知道生产模式下的每个错误。

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


【解决方案1】:

正如@Andrey 在上面的 cmets 中指出的那样,您应该真正检查传递给您的应用程序委托的 application:didFailToRegisterForRemoteNotificationsWithError: 的错误。它可能包含失败的原因。

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

【讨论】:

  • 这是我在苹果商店的第一个应用。请告诉我在生产模式下我怎么知道原因。
  • 那么,你是怎么知道APNS注册失败的呢?我假设您有某种报告;您也可以使用完全相同的报告来传递确切的错误。
  • 好的,如果这个错误是由上述任何一个问题引起的,我该怎么做才能解决它?
  • 如果错误是由于用户没有授予您的应用接收通知的权限,您可以尝试通过解释您的应用需要通知的原因来改变她的想法(例如,通过某种欢迎/信息屏幕) .除此之外,我认为除了确保您的应用处理“无通知”情况并继续运行并尽可能稳定之外,您无能为力。
猜你喜欢
  • 2015-11-28
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-21
相关资源
最近更新 更多