Wie funktioniert der WhatsApp-Webclient noch mit dem neuesten iOS-Update (SDK Version 13.0+)?

9

Daher wurde die Version 2.20.31 (veröffentlicht im März 2020) des WhatsApp-Clients um die Unterstützung des Dunkelmodus erweitert. Dies ist eine reine iOS 13-Funktion, und nach dem Erscheinungsbild scheint es sich um eine vollständig native Implementierung zu handeln. Ich denke, es ist sicher anzunehmen, dass die App jetzt mit iOS SDK 13.0 oder höher kompiliert wird.

Ab iOS 13 verlangt Apple nun, dass der native Anrufbildschirm angezeigt wird, wenn eine VoIP-Benachrichtigung empfangen wird. Andernfalls erhält die App keine weiteren VoIP-Benachrichtigungen. In früheren Versionen von iOS scheinen einige Apps (einschließlich WhatsApp) "gefälschte" eingehende VoIP-Anrufe zu verwenden, um die App im Hintergrund still zu aktivieren, wenn der Benutzer versucht, den Webclient zu verwenden, damit dieser dann eine Verbindung herstellen und Daten direkt austauschen kann mit dem Telefon.

Ab der neuesten Version scheint der Webclient jedoch trotz der von Apple eingeführten Einschränkungen weiterhin wie zuvor zu funktionieren. Mit einem Debugger kann beobachtet werden, wie die iOS-App aufwacht, wenn der Benutzer den Webclient auf einem PC öffnet. Es werden jedoch nie Anrufbildschirme angezeigt. Dies kann wiederholt und so oft durchgeführt werden, wie wir möchten.

Die Protokolle von WhatsApp scheinen zu bestätigen, was oben geschrieben steht :

default 17:09:44.515731+0000    callservicesd   Call source <CXXPCCallSource 0x111ecb0a0 identifier=UKFA9XBX6K.net.whatsapp.WhatsApp isConnected=1 processIdentifier=417 isPermittedToUsePublicAPI=1 isPermittedToUsePrivateAPI=0> registered with configuration <CXProviderConfiguration 0x111e9bb40 localizedName=‎WhatsApp ringtoneSoundURL=(null) iconTemplateImageData=0x0 maximumCallGroups=1 maximumCallsPerCallGroup=1 supportsAudioOnly=1 supportsVideo=1 supportsEmergency=0 supportsVoicemail=0 supportsCurrentPlatform=1 includesCallsInRecents=1 audioSessionID=1151157 supportedHandleTypes=2>

Wenn wir dies mit unserer App versuchen, sind die Ergebnisse ganz anders :

error   18:56:19.949023+0000    callservicesd   Killing VoIP app com.xxxxx.xxxxx.xxxxx because it failed to post an incoming call in time.

Irgendeine Idee, was hier los ist? Verwendet WhatsApp eine undokumentierte Problemumgehung oder nutzt es eine private API?

Vielen Dank im Voraus für alle Antworten.

DPR
quelle

Antworten:

6

Dies ist die neueste WhatsApp-Berechtigungsdatei:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>com.apple.developer.icloud-container-identifiers</key>
    <array>
        <string>57T9237FN3.net.whatsapp.WhatsApp</string>
    </array>
    <key>com.apple.developer.pushkit.unrestricted-voip</key>
    <true/>
    <key>com.apple.developer.ubiquity-container-identifiers</key>
    <array>
        <string>57T9237FN3.net.whatsapp.WhatsApp</string>
    </array>
    <key>application-identifier</key>
    <string>UKFA9XBX6K.net.whatsapp.WhatsApp</string>
    <key>com.apple.developer.carplay-messaging</key>
    <true/>
    <key>aps-environment</key>
    <string>production</string>
    <key>com.apple.developer.icloud-container-environment</key>
    <string>Production</string>
    <key>com.apple.developer.associated-domains</key>
    <array>
        <string>applinks:api.whatsapp.com</string>
        <string>applinks:v.whatsapp.com</string>
        <string>applinks:chat.whatsapp.com</string>
        <string>applinks:wa.me</string>
    </array>
    <key>com.apple.developer.siri</key>
    <true/>
    <key>com.apple.developer.team-identifier</key>
    <string>57T9237FN3</string>
    <key>com.apple.developer.icloud-services</key>
    <array>
        <string>CloudDocuments</string>
        <string>CloudKit</string>
    </array>
    <key>com.apple.security.application-groups</key>
    <array>
        <string>group.net.whatsapp.WhatsApp.shared</string>
        <string>group.com.facebook.family</string>
        <string>group.net.whatsapp.WhatsApp.private</string>
        <string>group.net.whatsapp.WhatsAppSMB.shared</string>
        <string>group.net.whatsapp.family</string>
    </array>
</dict>
</plist>

Diese spezielle Berechtigung scheint der Grund dafür zu sein, dass sie keinen eingehenden Anruf melden dürfen:

com.apple.developer.pushkit.unrestricted-voip

Ich kann keine Dokumentation zu dieser Berechtigung finden, daher bin ich mir ziemlich sicher, dass sie von Apple eine Sondergenehmigung erhalten haben.

rmendes
quelle
Nun, das Rätsel war dann gelöst. Vielen Dank!
DPR