ユーザーがアプリを強制終了した場合、アプリを再起動するためのvoipプッシュキット通知を受け取ることができませんマルチタスクインターフェイス)と、デバイスが再起動されたかどうかを示します。強制終了してデバイスを再起動した場合、Voip Pushkit通知はアプリを再起動しません。
しかし、私は、VoIP pushkitの通知は、次のシナリオで動作するように取得することができます:
アプリが強制的に辞め、その後pushkit通知が到着しました。アプリはすぐにリニューアルされます。このようなシナリオでは、標準のプッシュ通知はアプリを起動することができません。
アプリがバックグラウンド/サスペンド状態にあり、デバイスが再起動されました。 Voipモードのおかげで、デバイスの再起動時にアプリケーションが再起動されます(Xcodeアクティビティモニタのプロセスがわかります)。これらの用語でhttp://blog.biokoda.com/post/114315188985/ios-and-pushkitで記載されて適切に処理するpushkit通知を取得するために、ここで必要なトリックがあり、「バックグラウンドタスクを開始PushKit初期化する前には、このタスクを完了PushKitトークンを受信したときに」
何とかときこれらの2つを組み合わせると(デバイスの再起動とアプリの強制終了)、プッシュキットの通知はアプリを再起動していないようです。また、Xcodeのデバイスログを見ると、通知がシステムによって処理されたというapsdからのログは得られません。
@implementation AppDelegate
{
UIBackgroundTaskIdentifier bgTask;
}
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
UIApplication* app = [UIApplication sharedApplication];
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}];
dispatch_async(dispatch_get_global_queue(
DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
while (true) {
;
}
});
// Initialize pushkit
PKPushRegistry *pushRegistry =
[[PKPushRegistry alloc] initWithQueue:dispatch_get_main_queue()];
pushRegistry.delegate = self;
pushRegistry.desiredPushTypes = [NSSet setWithObject:PKPushTypeVoIP];
return YES;
}
- (void)pushRegistry:(PKPushRegistry *)registry
didUpdatePushCredentials:(PKPushCredentials *)credentials
forType:(NSString *)type{
UIApplication* app = [UIApplication sharedApplication];
[app endBackgroundTask:bgTask];
// ... more code to read the token ...
}
- (void)pushRegistry:(PKPushRegistry *)registry
didReceiveIncomingPushWithPayload:(PKPushPayload *)payload
forType:(NSString *)type {
// ... logging to check if notification is received ...
}
はまた、私は、「ボイスオーバーIP」と背景モードで有効になって「リモート通知」を持っている:
は、ここに私のコードです。
このシナリオでは、Whatsappのような他のアプリも再起動できるので、間違っているとは分かりません。
関連するメモでは、次のことを行うのに役立ちません。1)強制終了2)受信したプッシュキット通知を送信します。3)再起動します。アプリは再起動されず、新しいプッシュ通知はまだそれを再起動しません。
@ sahara108と私自身もこの問題を抱えています。私はアップルに直接尋ねたので、他の誰かがそれを理解する前に彼らが答えたら私はここに答えを掲示するでしょう。 また、WhatsAppらは再起動できると言いますが、完全に再起動しますか?私たちの調査では、アプリケーションは再起動しますが、完全には起動しません。彼らのロギングは途中で切り詰められています(OS killのように見えます)。 – Pandalover
私は、アクティビティモニターで起動されているプロセスを見て、アプリケーションが再開したと判断しました。 – mcaoun