Bagaimana klien web WhatsApp masih bekerja dengan pembaruan iOS terbaru (SDK versi 13.0+)?

9

Jadi dukungan mode gelap telah ditambahkan ke versi 2.20.31 (dirilis pada bulan Maret 2020) dari klien WhatsApp. Ini adalah fitur iOS 13-only, dan dari tampilan & rasa itu tampaknya merupakan implementasi asli sepenuhnya. Saya pikir aman untuk mengasumsikan bahwa aplikasi tersebut sekarang sedang dikompilasi dengan iOS SDK 13.0 atau lebih tinggi.

Masalahnya, pada iOS 13, Apple sekarang mengharuskan layar panggilan asli untuk ditampilkan setiap kali pemberitahuan VoIP diterima - jika tidak, aplikasi tidak akan menerima pemberitahuan VoIP lebih lanjut. Pada versi iOS sebelumnya, beberapa aplikasi (termasuk WhatsApp) tampaknya menggunakan panggilan VoIP masuk "palsu" untuk membangunkan aplikasi secara diam-diam ketika pengguna mencoba menggunakan klien web, sehingga yang terakhir kemudian dapat terhubung dan bertukar data secara langsung dengan telepon.

Namun, pada versi terbaru, klien web tampaknya masih berfungsi seperti sebelumnya meskipun ada pembatasan yang diperkenalkan oleh Apple. Menggunakan debugger adalah mungkin untuk mengamati aplikasi iOS bangun setiap kali pengguna membuka klien web pada PC, tetapi tidak ada layar panggilan yang pernah ditampilkan. Ini dapat dilakukan berulang kali dan sesering yang kita inginkan.

Log dari WhatsApp tampaknya mengkonfirmasi apa yang tertulis di atas :

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>

Jika kami mencoba melakukan ini dengan aplikasi kami, hasilnya sangat berbeda :

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

Adakah yang tahu apa yang terjadi di sini? Apakah WhatsApp menggunakan solusi tidak terdokumentasi atau mengeksploitasi semacam API pribadi?

Terima kasih sebelumnya atas jawaban apa pun.

DPR
sumber

Jawaban:

6

Ini adalah file hak terbaru 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>

Hak khusus ini tampaknya menjadi alasan bahwa mereka diizinkan untuk tidak melaporkan panggilan masuk:

com.apple.developer.pushkit.unrestricted-voip

Saya tidak dapat menemukan dokumentasi tentang hak ini, jadi saya cukup yakin mereka telah diberi izin khusus oleh Apple.

rmendes
sumber
Nah, misteri terpecahkan saat itu. Terima kasih banyak!
DPR