WhatsApp Web客户端如何与最新的iOS更新(SDK版本13.0+)一起使用?


9

因此,暗模式支持已添加到WhatsApp客户端的2.20.31版本(于2020年3月发布)中。这是仅限iOS 13的功能,从外观上看,它似乎是完全本机的实现。我认为可以安全地假定该应用程序现在已使用iOS SDK 13.0或更高版本进行编译。

事实是,从iOS 13开始,Apple现在要求每当收到VoIP通知时都显示本机呼叫屏幕 -否则,该应用程序将不再接收任何其他VoIP通知。在iOS的早期版本中,某些应用程序(包括WhatsApp)似乎在用户尝试使用Web客户端时使用“虚假”传入的VoIP呼叫在后台静默唤醒该应用程序,以便后者可以直接连接并交换数据用电话。

但是,从最新版本开始,尽管Apple引入了限制,但Web客户端仍然可以像以前一样工作。使用调试器,每当用户在PC上打开Web客户端时,都可以观察到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?

预先感谢您的任何答案。

Answers:


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给予了他们特别的许可。


好吧,谜团解决了。非常感谢你!
DPR
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.