我们的服务器发送内容可用的推送通知。 UIBackgroundMode允许推送通知。无论应用程序是在前台还是在后台(按下主页按钮),一切都在调试模式下运行良好。在两种情况下都会调用委托didReceiveRemoteNotification。
但是,如果应用程序未连接到调试器并且在后台,则永远不会调用它。当我按下任何通知时,它会被调用,这不会给我任何时间提前下载内容,因为它应该这样做。 可以是我们使用开发证书而不是生产吗?还有什么其他原因会导致类似的事情发生? (如果您希望我提供任何代码片段来查找问题,请告知我们)
感谢任何帮助
答案 0 :(得分:2)
**转到功能并打开后台模式,然后选择后台获取,远程通知选项。 如果您使用的是ios 8,请使用**
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler
方法代替
答案 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) {