当应用程序处于不活动状态时无法接收无声通知iOS
我正在开发应用程序,并且正在使用静默推送通知来发送一些数据。当应用程序处于活动状态时,推送工作正常,但如果我扫出应用程序或它不活动,我的应用程序未收到推送通知。我已经在能力使得其在后台模式推送通知,并添加在info.plist中当应用程序处于不活动状态时无法接收无声通知iOS
这就是我与推发送沿样本数据
{
"aps": {
"content-available": 1
},
"yourdatakey":{data}
}
我应该怎么做来解决所需的背景模式键此问题?? iOS应用程序可以在非活动模式下接收静默推送通知吗?
-(void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler
{
if(SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"10.0"))
{
NSLog(@"iOS version >= 10. Let NotificationCenter handle this one.");
return;
}
NSLog(@"HANDLE PUSH, didReceiveRemoteNotification: %@", userInfo);
if([UIApplication sharedApplication].applicationState == UIApplicationStateInactive)
{
NSLog(@"INACTIVE");
completionHandler(UIBackgroundFetchResultNewData);
}
else if([UIApplication sharedApplication].applicationState == UIApplicationStateBackground)
{
NSLog(@"BACKGROUND");
completionHandler(UIBackgroundFetchResultNewData);
}
else
{
NSLog(@"FOREGROUND");
completionHandler(UIBackgroundFetchResultNewData);
}
}
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
willPresentNotification:(UNNotification *)notification
withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler
{
NSLog(@"Handle push from foreground");
}
- (void)userNotificationCenter:(UNUserNotificationCenter *)center
didReceiveNotificationResponse:(UNNotificationResponse *)response
withCompletionHandler:(void (^)())completionHandler
{
NSLog(@"Handle push from background or closed");
}
推在我的应用程序中起着至关重要的作用,不希望有任何延迟。我应该怎么办立即接收推?? ...
据我已经能够告诉,无声推送通知应该是这个样子的:
{
"to" : "<DEVICE_ID>",
"priority" : "high",
"content_available" : true,
"data" : { "custom_key":"custom value", "custom_key_2":"custom value 2" }
}
对于我来说,这当应用处于前景或背景时几乎立即发送。但是,当应用程序处于非活动状态时,它根本无法通过(它不会启动应用程序来处理该消息)。
如果我添加下面的消息:
"notification" : { "body" : "Notification Text", "sound" : "chime.aiff" }
这将在通知区域中的报时声音和显示“通知文本”时,应用程序是无效的,但仍是应用程序将无法启动,以处理消息的数据部分。我明白这可能是通过设计,但我使用这个来确认我正在收到 - 什么 - 而应用程序不活动。
因此,这可能会帮助你解决一半的问题(立即获取推送通知),但恐怕我仍然试图在应用程序处于非活动状态时使其工作。
编辑:它当一个推送通知进来出现,如果用户强制关闭应用程序(从任务管理器向上滑动),苹果禁用启动应用程序没有什么可以做这件事。 Apple的文档指出,如果您再次手动启动应用程序或重新启动设备,它将重新启用从无声推送通知启动应用程序,但我没有发现这种情况。我认为最简单的答案是:“当Apple决定让他们工作时,iOS上的无声推送通知工作。”我想如果你需要一个能够以预期的方式工作的移动操作系统,请将你的用户引导至Android。
我只想确认我也有这个问题,看起来像其他人一样:https://forums.developer.apple.com/thread/36776 –
你能看到通知中心的横幅吗? –