tigase / siskin-im

(M) Public Project of Tigase Messenger for iOS devices based on Tigase Swift XMPP library.
GNU General Public License v3.0
175 stars 37 forks source link

No audio/video buttons on iOS 16.7. #230

Open germanicianus opened 1 year ago

germanicianus commented 1 year ago

Describe the bug See issue subject.

To Reproduce Steps to reproduce the behavior:

  1. Have Siskin IM installed on an iPhone with iOS 16.7.
  2. Open the chat of a contact.
  3. Audio and video buttons are not shown.
  4. Open iOS Settings and go to Siskin IM.
  5. Access settings for Microphone, Camera and Local Network are missing.

Expected behavior Audio and video call buttons are shown.

Screenshots Can be attached later in case needed.

Details

Additional context

licaon-kter commented 1 year ago

Your contact uses which Client?

germanicianus commented 1 year ago

@licaon-kter, please see below.

Works: iPhone 7 Plus iOS 15.7.9 <> Android blabber.im

Doesn't work (no buttons): iPhone 13 iOS 16.7 <> Android blabber.im iPhone 13 iOS 16.7 <> iPhone 7 Plus iOS 15.7.9

So I think it's some issue related to the rights code/management on iOS 16.7. Possibly Apple changed something with the major iOS upgrade from 15 to 16.

licaon-kter commented 1 year ago

The iOS clients are in foreground both when you try yes?

You both added yourselves as contacts, yes?

hantu85 commented 1 year ago

@germanicianus I think you might encounter a slightly more complicated issue.

For the buttons to not show up (for 1-1 chats), most likely reason could be your device locale. According to the guidelines from Apple (legal stuff), CallKit (framework used for VoIP integration on iPhone) cannot be used for applications sold using AppStore in China.

As Apple did not provide any way to detect that (and disable usage of CallKit only in this case), the only solution that we had was to disable usage of CallKit when device locale region code is set to CN or CHN.

And disabling CallKit will result in buttons not being available, as feature will not work in this case. Also, disable CallKit will not use microphone nor camera, so it will not ask for permissions to use them nor register for that - Siskin does that only when user actually wants to use functionality requiring mic or camera.

germanicianus commented 1 year ago

@hantu85, you hit the nail on the head. On the iPhone 13, Siskin IM has been installed from the China AppStore.

If not already there, a prominent hint should be put onto the Siskin IM China AppStore page - something like you stated.

According to the guidelines from Apple (legal stuff), CallKit (framework used for VoIP integration on iPhone) cannot be used for applications sold using AppStore in China.

Did Apple give any useful reasoning? FaceTime also works on the iPhones sold in China, so more information on that would be really helpful.

I suggest to use this issue as reference for putting up some documentation into appropriate places.

germanicianus commented 1 year ago

Just as reference for people reading this issue - commit https://github.com/tigase/siskin-im/commit/ab733cbc3bc5bf6eafaf0d860546729e8da84b70 added the change of disabling CallKit in Siskin IM for users having their region set to China.

The notice Apple sends out to developers having enabled CallKit for China contains below paragraph.

Recently, the Chinese Ministry of Industry and Information Technology (MIIT) requested that CallKit functionality be deactivated in all apps available on the China App Store. During our review, we found that your app currently includes CallKit functionality and has China listed as an available territory in App Store Connect.

Source: https://support.dolby.io/hc/en-au/articles/1500007496422-iOS-App-approval-CallKit-in-China-region