Ich kann keine voip-Pushkit-Benachrichtigungen erhalten, um die App neu zu starten, wenn der Benutzer die App zwangsweise beendet hat (durch Streichen) die Multitasking-Schnittstelle) UND wenn das Gerät neu gestartet wurde.Die Voip Pushkit-Benachrichtigung startet die App nicht neu, wenn sie zwangsweise beendet wurde und das Gerät neu gestartet wurde.
Allerdings kann ich die voip pushkit Meldungen in den folgenden Szenarien an der Arbeit:
Die App wurde zwang verliess dann die pushkit Meldung eintrifft. Die App wird sofort neu gestartet. Standard-Push-Benachrichtigungen können die App in einem solchen Szenario nicht aufwecken.
Die App war im Hintergrund/ausgesetzt und das Gerät wird neu gestartet. Dank dem Voip-Modus wird die App beim Neustart des Geräts neu gestartet (ich kann den Vorgang im Xcode Activity Monitor sehen). Es gibt einen Trick hier notwendig, um die pushkit Benachrichtigung zu erhalten, richtig verarbeitet werden, die in http://blog.biokoda.com/post/114315188985/ios-and-pushkit in diesen Begriffen beschrieben wird „vor der Initialisierung PushKit eine Hintergrundaufgabe starten. Um diese Aufgabe zu beenden, wenn PushKit Token empfangen wird“
Irgendwie, wenn Kombinieren diese beiden (Gerät Neustart und App Force-Quit) dann Pushkit-Benachrichtigungen scheint die App nicht neu zu starten. Auch wenn ich das Gerät in Xcode anmelde, bekomme ich keine Protokolle von apsd, die sagen, dass die Benachrichtigung vom System verarbeitet wurde.
Hier ist mein Code:
@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 ...
}
Auch ich "Voice over IP" und "Remote-Benachrichtigungen" aktiviert in Hintergrund-Modi haben.
Ich weiß, dass andere Anwendungen wie WhatsApp in diesem Szenario neu gestartet werden können, also verstehe ich nicht, was ich falsch mache.
Auf eine verwandte Anmerkung, hilft es nicht, das folgende zu tun 1) Erzwinge das Beenden 2) Schicke eine Pushkit-Benachrichtigung - die empfangen wird 3) Neustart. Die App wird nicht neu gestartet und eine neue Push-Benachrichtigung wird sie immer noch nicht neu starten.
@ Sahara108 und ich haben auch dieses Problem. Ich habe Apple direkt gefragt. Wenn sie antworten, bevor jemand anderes es herausgefunden hat, werde ich die Antwort hier posten. Auch Sie erwähnen, dass Sie WhatsApp et al können neu gestartet werden, aber starten sie vollständig neu? Bei unseren Untersuchungen starten die Apps neu, starten aber nicht vollständig.Ihre Protokollierung wird vorzeitig abgeschnitten (sieht aus wie ein OS-Kill). – Pandalover
Ich habe festgestellt, dass die App neu gestartet wurde, indem ich den Prozess im Aktivitätsmonitor betrachtet habe. – mcaoun