アプリが実行されていないときにニューススタンドの通知を受信していません。これが私が行ったことです。
アプリには、適切な plist キー 'UINewsstandApp = YES' および 'UIBackgroundModes = newsstand-content' があります。
アプリデリゲートですべての通知タイプに登録し、APNS からトークンを受け取り、サーバー側から (私は Grocer という gem を使用しています)、開発証明書を設定し、通常のプッシュを送信すると動作します。
ニューススタンドのプッシュを送信すると、アプリが「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 がそれをカスタム キーとして解析したことを意味しますか?