我正在应用程序中实现报亭功能,虽然应用程序收到推送通知,但它不会以后台模式启动。
如果我点击通知提醒应用程序启动,我可以看到“内容可用”:字典中存在1,问题也已下载,但应用程序不会自动启动。
我已添加到plist:
<key>UIBackgroundModes</key>
<array>
<string>newsstand-content</string>
</array>
和didFinishLaunchingWithOptions:
[[NSUserDefaults standardUserDefaults]setBool: YES forKey:@"NKDontThrottleNewsstandContentNotifications"]; // for testing purposes
[[NSUserDefaults standardUserDefaults] synchronize];
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeNewsstandContentAvailability )];
我也看到我的应用未显示在设置 - &gt;下商店 - &gt;自动下载(以及其他杂志出现在那里)。
我错过了什么吗?这应该适用于沙盒环境吗?
答案 0 :(得分:2)
一些澄清
NSDictionary * payload = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if(payload&amp;&amp; [[payload objectForKey:kContentAvailablePush] caseInsensitiveCompare:@“1”] == NSOrderedSame) { NSLog(@“由于NS通知而推出”); }
答案 1 :(得分:1)
您必须注册报摊通知才能显示在“设置”中并收到“报摊通知”。要注册,请将其添加到application:didFinishLaunchingWithOptions:
:
// Add registration for newsstand notifications
// In your application:didFinishLaunchingWithOptions:
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
UIRemoteNotificationTypeNewsstandContentAvailability];
将要求用户接受后台下载。
请查看有关报摊应用的完整教程:http://www.viggiosoft.com/blog/blog/2011/10/17/ios-newsstand-tutorial/
答案 2 :(得分:0)
确保在你的plist中设置了UINewsstandApp = YES
答案 3 :(得分:0)
{"aps": {"badge": 1, "alert": "test","content-available":1}}
这是一个正确的有效载荷。
{"aps": {"badge": 1, "alert": "test"},"content-available":1}
这是一个错误的有效载荷。
答案 4 :(得分:-1)
当有效内容可用时,会发生这种情况:
必须有一个用户操作来启动应用程序,主要是通过将警报消息添加到推送通知中。
<强>来源
http://samwize.com/2015/08/07/how-to-handle-remote-notification-with-background-mode-enabled/
然而,这并不能解决您的问题。作为解决方法,您可以使用后台提取,它会在每个特定时间间隔唤醒应用程序。