DPR*_*DPR 17 ios whatsapp pushkit
暗模式支持已添加到 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 应用程序唤醒,但从未显示呼叫屏幕。这可以根据我们的需要反复进行。
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>
Run Code Online (Sandbox Code Playgroud)
error 18:56:19.949023+0000 callservicesd Killing VoIP app com.xxxxx.xxxxx.xxxxx because it failed to post an incoming call in time.
Run Code Online (Sandbox Code Playgroud)
知道这里发生了什么吗?WhatsApp 是否使用任何未公开的解决方法或利用某种私有 API?
小智 17
这是 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>
Run Code Online (Sandbox Code Playgroud)
这个特定的权利似乎是允许他们不报告来电的原因:
com.apple.developer.pushkit.unrestricted-voip
我找不到有关此权利的任何文档,因此我很确定他们已获得 Apple 的特别许可。