当应用程序未运行时,我没有收到报亭通知,这就是我所做的。
该应用程序具有正确的 plist 键“UINewsstandApp = YES”和“UIBackgroundModes = newsstand-content”。
在应用程序委托中,我注册了所有通知类型,并从服务器端(我使用的是名为 Grocer 的 gem)接收来自 APNS 的令牌,我设置了开发证书并发送常规推送,它可以工作。
如果我发送报摊推送,如果应用程序在“didReceiveRemoteNotification”上运行,我会收到它,但当应用程序未运行时,我在通知中心什么也得不到,这主要是因为“Grocer”具有以下有效负载 {“aps”: {"content-available":1}} 并且不能添加任何其他键(警报、徽章等)
所以我认为我不应该在通知中心得到任何东西,我在启动选项中查找'UIApplicationLaunchOptionsRemoteNotificationKey',然后编写一个文件以确保应用程序在后台运行,该文件永远不会这样写
NSDictionary *remoteNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if(remoteNotif)
{
NSString *cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [cachePath stringByAppendingPathExtension:@"pushreceived.txt"];
[@"testing" writeToFile:filePath atomically:YES encoding:NSASCIIStringEncoding error:nil];
}
我在我的用户默认设置中将 NKDontThrottleNewsstandContentNotifications 设置为 true,然后我进行同步以确保。
当应用程序运行时,无论我发送多少次推送,我总是会在“didReceiveRemoteNotification”上收到回调,并带有正确的“内容可用”
如果应用程序已关闭或在后台,则不会发生任何事情。
更新:
我设法更改了发送通知有效负载的 gem,这是它发送的字典
{"aps"=>
{
"alert"=>"Hello iPhone!!",
"content-available"=>1,
"badge"=>1,
"sound"=>"default"
}
}
这里是我在我的应用程序上收到的用户信息字典(运行时)
{
aps = {
alert = "Hello iPhone!!";
badge = 1;
"content-available" = 1;
sound = default;
};
}
请注意 content-available 周围的引号,这是否意味着 APNS 将其解析为自定义键?