Як веб-клієнт WhatsApp все ще працює з останнім оновленням iOS (SDK версія 13.0+)?


9

Так підтримка темного режиму була додана до версії 2.20.31 (випущена в березні 2020 року) клієнта WhatsApp. Це функція лише для iOS 13, і з вигляду та відчуття вона виглядає як повністю натільна реалізація. Я думаю, що можна припустити, що додаток зараз компілюється з iOS SDK 13.0 або вище.

Річ у тім, що, як і в iOS 13, Apple тепер вимагає, щоб екран рідних дзвінків відображався щоразу, коли надійшло сповіщення VoIP - інакше додаток більше не отримуватиме сповіщення VoIP. У попередній версії iOS деякі програми (включаючи WhatsApp), як видається, використовують "підроблені" вхідні дзвінки VoIP, щоб мовчки прокинути додаток у фоновому режимі, коли користувач намагався використовувати веб-клієнт, щоб останній міг потім безпосередньо підключатися та обмінюватися даними з телефоном.

Однак, як і в останній версії, веб-клієнт все ще працює як раніше, незважаючи на обмеження, введені Apple. За допомогою налагоджувача можна спостерігати за пробудженням програми iOS, коли користувач відкриває веб-клієнт на ПК, але екрани викликів ніколи не відображаються. Це можна робити неодноразово і так часто, як ми хочемо.

Журнали з WhatsApp, здається, підтверджують те, що написано вище :

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>

Якщо ми спробуємо зробити це за допомогою нашого додатку, результати будуть зовсім іншими :

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

Будь-яка ідея, що тут відбувається? Чи використовує WhatsApp якийсь недокументований спосіб вирішення чи використовує якийсь приватний API?

Заздалегідь дякую за будь-які відповіді.

Відповіді:


6

Це останній файл прав доступу до WhatsApp:

<?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>

Це конкретне право, здається, є причиною того, що їм дозволяється не повідомляти про вхідний дзвінок:

com.apple.developer.pushkit.unrestricted-voip

Я не можу знайти жодної документації щодо цього права, тому я впевнений, що Apple отримала спеціальний дозвіл.


Ну, таємниця вирішена тоді. Дуже дякую!
ДНР
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.