Làm thế nào để ứng dụng web WhatsApp vẫn hoạt động với bản cập nhật iOS mới nhất (phiên bản SDK 13.0+)?


9

Vì vậy, hỗ trợ chế độ tối đã được thêm vào phiên bản 2.20.31 (phát hành vào tháng 3 năm 2020) của ứng dụng khách WhatsApp. Đây là một tính năng chỉ dành cho iOS 13 và từ giao diện & cảm nhận, nó dường như là một triển khai hoàn toàn tự nhiên. Tôi nghĩ thật an toàn khi cho rằng ứng dụng hiện đang được biên dịch với iOS SDK 13.0 trở lên.

Vấn đề là, kể từ iOS 13, Apple hiện yêu cầu hiển thị màn hình cuộc gọi gốc bất cứ khi nào nhận được thông báo VoIP - nếu không, ứng dụng sẽ không nhận được bất kỳ thông báo VoIP nào nữa. Trong phiên bản iOS trước, một số ứng dụng (bao gồm WhatsApp) dường như sử dụng các cuộc gọi VoIP đến "giả mạo" để âm thầm đánh thức ứng dụng ở chế độ nền khi người dùng cố gắng sử dụng máy khách web để sau đó có thể kết nối và trao đổi dữ liệu trực tiếp với điện thoại.

Tuy nhiên, kể từ phiên bản mới nhất, máy khách web vẫn hoạt động như trước đây mặc dù có giới hạn do Apple giới thiệu. Sử dụng trình gỡ lỗi, có thể quan sát ứng dụng iOS thức dậy bất cứ khi nào người dùng mở ứng dụng web trên PC, nhưng không có màn hình cuộc gọi nào được hiển thị. Điều này có thể được thực hiện nhiều lần và thường xuyên như chúng ta muốn.

Nhật ký từ WhatsApp dường như xác nhận những gì được viết ở trên :

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>

Nếu chúng tôi cố gắng làm điều này với ứng dụng của mình, kết quả hoàn toàn khác :

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

Có ai biết chuyện gì đang xảy ra ở đây không? WhatsApp có sử dụng bất kỳ loại giải pháp không có giấy tờ nào hoặc khai thác một số loại API riêng tư không?

Cảm ơn trước cho bất kỳ câu trả lời.

Câu trả lời:


6

Đây là tập tin quyền lợi mới nhất của 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>

Quyền lợi cụ thể này dường như là lý do mà họ được phép không báo cáo cuộc gọi đến:

com.apple.developer.pushkit.unrestricted-voip

Tôi không thể tìm thấy bất kỳ tài liệu nào liên quan đến quyền lợi này, vì vậy tôi khá chắc chắn rằng họ đã được Apple cấp phép đặc biệt.


Thôi, bí ẩn đã giải quyết rồi. Cảm ơn rât nhiều!
DPR
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.