内容可用的推送通知在不调试时不调用委托

时间:2015-12-03 11:37:05

标签: ios objective-c push-notification

我们的服务器发送内容可用的推送通知。 UIBackgroundMode允许推送通知。无论应用程序是在前台还是在后台(按下主页按钮),一切都在调试模式下运行良好。在两种情况下都会调用委托didReceiveRemoteNotification。

但是,如果应用程序未连接到调试器并且在后台,则永远不会调用它。当我按下任何通知时,它会被调用,这不会给我任何时间提前下载内容,因为它应该这样做。 可以是我们使用开发证书而不是生产吗?还有什么其他原因会导致类似的事情发生? (如果您希望我提供任何代码片段来查找问题,请告知我们)

感谢任何帮助

3 个答案:

答案 0 :(得分:2)

**转到功能并打开后台模式,然后选择后台获取,远程通知选项。 如果您使用的是ios 8,请使用**

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler

方法代替

  • (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

答案 1 :(得分:0)

  • 您是否添加了这些注册支持行

  • (BOOL)应用程序:(UIApplication *)应用程序didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //使用APNS注册设备并指定支持的通知类型: [[UIApplication sharedApplication] registerForRemoteNotificationTypes:    (UIRemoteNotificationTypeBadge |     UIRemoteNotificationTypeSound |     UIRemoteNotificationTypeAlert)];

    返回YES; }

//在registerForRemoteNotificationTypes方法完成时调用:   - (void)application:(UIApplication *)application     didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { }   - 现在生成推送通知证书,如.p12,如果你想从客户端检查(没有服务器),然后使用Pusher应用程序生成通知。如果你的证书有效,那么你得到通知。   - 要生成通知证书,请点击http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1链接。

答案 2 :(得分:0)

我也遇到过同样的问题,每种方法在调试模式下都可以正常工作,但在未调试时无法运行。 您需要通过以下方法删除对UIApplication.State.background的检查(如果有)。

func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {