Так підтримка темного режиму була додана до версії 2.20.31 (випущена в березні 2020 року) клієнта WhatsApp. Це функція лише для iOS 13, і з вигляду та відчуття вона виглядає як повністю натільна реалізація. Я думаю, що можна припустити, що додаток зараз компілюється з iOS SDK 13.0 або вище.
Річ у тім, що, як і в iOS 13, Apple тепер вимагає, щоб екран рідних дзвінків відображався щоразу, коли надійшло сповіщення VoIP - інакше додаток більше не отримуватиме сповіщення VoIP. У попередній версії iOS деякі програми (включаючи WhatsApp), як видається, використовують "підроблені" вхідні дзвінки VoIP, щоб мовчки прокинути додаток у фоновому режимі, коли користувач намагався використовувати веб-клієнт, щоб останній міг потім безпосередньо підключатися та обмінюватися даними з телефоном.
Однак, як і в останній версії, веб-клієнт все ще працює як раніше, незважаючи на обмеження, введені Apple. За допомогою налагоджувача можна спостерігати за пробудженням програми 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?
Заздалегідь дякую за будь-які відповіді.