WhatsApp Web客户端如何与最新的iOS更新(SDK版本13.0+)一起使用? [英] How does the WhatsApp web client still work with the latest iOS update (SDK version 13.0+)?

查看:220
本文介绍了WhatsApp Web客户端如何与最新的iOS更新(SDK版本13.0+)一起使用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Dark mode support was added to version 2.20.31 (released in March of 2020) of the WhatsApp client. This is an iOS 13-only feature, and from the look & feel it appears to be a fully native implementation. I think it is safe to assume that the app is now being compiled with iOS SDK 13.0 or above.

问题是,从iOS 13开始, Apple现在需要本机调用屏幕会在收到VoIP通知时显示 -否则,该应用将不会再收到任何VoIP通知.在iOS的早期版本中,某些应用程序(包括WhatsApp)似乎在用户尝试使用Web客户端时使用虚假"传入VoIP呼叫在后台静默唤醒该应用程序,以便后者可以直接连接并交换数据用手机.

The thing is, as of iOS 13, Apple now requires the native call screen to be shown whenever a VoIP notification is received - otherwise, the app will not receive any further VoIP notifications. In previous version of iOS, some apps (including WhatsApp) appear to use "fake" incoming VoIP calls to silently wake up the app in background when the user attempted to use the web client, so that the latter could then connect and exchange data directly with the phone.

但是,尽管有Apple的限制,但从最新版本开始,Web客户端仍然可以像以前一样工作.使用调试器,每当用户在PC上打开Web客户端时,就可以观察到iOS应用程序正在唤醒,但从未显示任何呼叫屏幕.可以重复进行此操作,并可以根据需要多次进行.

However, as of the latest version, the web client still appears to work as it did before despite the restriction introduced by Apple. Using a debugger it is possible to observe the iOS app waking up whenever the user opens the web client on a PC, but no call screens are ever shown. This can be done repeatedly and as often as we want.

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?

Any idea what's going on here? Is WhatsApp using any sort of undocumented workaround or exploiting some sort of private API?

推荐答案

这是WhatsApp最新的权利文件:

This is WhatsApp latest entitlements file:

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

此特殊权利似乎是允许他们不报告来电的原因:

This specific entitlement seems to be the reason that they are allowed to not report an incoming call:

com.apple.developer.pushkit.unrestricted-voip

我找不到有关此权利的任何文档,因此,我很确定Apple给予了他们特殊的许可.

I can't find any documentation regarding this entitlement, so I'm pretty sure they have been given a special permission by Apple.

这篇关于WhatsApp Web客户端如何与最新的iOS更新(SDK版本13.0+)一起使用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆