Die aktuellen API-Änderungen für iOS9 geben an, dass -setKeepAliveTimeout:handler:
veraltet ist.
Bisher war dies der einzige Weg, wie eine VoIP-SIP-App auf iOS ihre Registrierung beim SIP-Server beibehalten konnte.
Diese Technik wird von verschiedenen Apps wie LinPhone und anderen verwendet.
Hat jemand eine Meinung zu den vorgeschlagenen Alternativen von Apple? Oder wird SIP ab (post-) iOS9 lahmgelegt?
Siehe: Ссылка :
Offenbar müssen Sie das Signalisierungsereignis an den Apple Push-Benachrichtigungsserver weitergeben, indem Sie sich für Ссылка .
Das ist ziemlich bedauerlich, scheint aber unvermeidlich. Die Idee dahinter ist wahrscheinlich, Batterie zu sparen, indem Sie weniger aktive Netzwerkverbindungen auf dem Telefon haben.
Das bedeutet also, dass Sie die Information, dass ein Ereignis Ihre Anwendung erreicht hat, an Apple-Dienste weitergeben müssen. Sie können wahrscheinlich nur eine Aktivierungsbenachrichtigung an Ihre App senden und dann selbst den Ereignistyp laden. Dies kann jedoch zu viel Latenz verursachen, so dass Sie möglicherweise mehr Signalisierungsinformationen an Apple-Dienste weitergeben müssen. : - /
Aus Apple's Docs:
In iOS 8 und höher registrieren sich Voice-over-IP (VoIP) -Apps für remote Benachrichtigungen von registerForRemoteNotifications, anstatt diese Methode zu verwenden. Durch die Verwendung von Remote-Benachrichtigungen muss kein Timeout-Handler für den VoIP-Dienst eingerichtet werden. Wenn ein Anruf für den Benutzer ankommt, sendet der VoIP-Dienst stattdessen eine VoIP-Remote-Benachrichtigung an das Gerät des Benutzers. Nach dem Empfang dieser Benachrichtigung startet das Gerät die App oder weckt die App nach Bedarf auf, sodass sie den eingehenden Anruf verarbeiten kann.
In der Vergangenheit wurde der setKeepAliveTimeout-Aufruf verwendet, um zu ermöglichen, dass ein Handler die Endzeit aufgerufen wird und maximal 10 Sekunden zum Beenden oder zum Beenden benötigt wird. Auch Aufrufe an den Handler sind nicht garantiert der Zeitüberschreitungswert.
Die neue (registerForRemoteNotifications) wäre in Ordnung, da der Handler intern ist (zu IOS) und würde Ihre App wiederum aufrufen, wenn ein Remote-Ereignis auftritt (dies würde sogar Ihre App wecken, wenn sie sich im Schlaf befindet) .
Wie auch immer, beide sollten das gleiche tun, die ältere Version würde mit dem Code umgehen, und die neue, Sie würden eine Benachrichtigung erhalten (Sie könnten sie auch irgendwo behandeln), aber Sie werden das Timeout nicht mehr kontrollieren.
Von Apple-Dokumentation:
Rufen Sie diese Methode auf, um den Registrierungsprozess mit dem Apple Push Notification-Dienst zu initiieren. Wenn die Registrierung erfolgreich ist, ruft die App die Anwendung des Anwendungsdelegatenobjekts auf: didRegisterForRemoteNotificationsWithDeviceToken: method und übergibt ihr ein Geräte-Token. Sie sollten dieses Token an den Server weitergeben, den Sie zum Generieren von Remote-Benachrichtigungen für das Gerät verwenden. Wenn die Registrierung fehlschlägt, ruft die App die Anwendung des Anwendungsdelegaten auf: didFailToRegisterForRemoteNotificationsWithError: method.
Wenn Sie möchten, dass die Remote-Benachrichtigungen Ihrer App Warnungen anzeigen, Sounds abspielen oder andere benutzerbezogene Aktionen ausführen, müssen Sie die Methode registerUserNotificationSettings: aufrufen, um die Arten von Benachrichtigungen anzufordern, die Sie verwenden möchten. Wenn Sie diese Methode nicht aufrufen, übermittelt das System automatisch alle Remote-Benachrichtigungen an Ihre App. Da der Registrierungsprozess die bevorzugten Benachrichtigungseinstellungen des Benutzers berücksichtigt, garantiert die Anforderung des Zugriffs auf Benachrichtigungstypen für Benutzer auch nicht, dass diese gewährt werden. Verwenden Sie die currentUserNotificationSettings-Methode, um herauszufinden, welche Benachrichtigungseinstellungen verfügbar sind.
Und schließlich (für die Unregistrierung):
Sie sollten diese Methode nur in seltenen Fällen aufrufen, z. B. wenn eine neue Version der App die Unterstützung für alle Arten von Remote-Benachrichtigungen entfernt. Nutzer können vorübergehend verhindern, dass Apps über den Abschnitt "Benachrichtigungen" in der App "Einstellungen" Remotebenachrichtigungen erhalten. Apps, die über diese Methode nicht registriert wurden, können sich immer neu registrieren.
Nicht sicher, aber ich hoffe, das hilft.
Grüße,
Heider Sati
Wenn wir PUSHKIT integrieren, kümmert sich alles um die Anwendung. Wenn Sie die Push-Benachrichtigung senden, während Sie einen VoIP-Anruf mit Push-Benachrichtigung über PUSHKIT erhalten, wird es funktionieren, wenn es im Hintergrundzustand ist. Ich habe das Gleiche gemacht.
Ich hoffe, dass dir das weiterhilft.
Tags und Links voip ios9 sip registration keep-alive