Disabling Callkit for China Apps

We received the following message after an app rejection asking us to remove callkit integration due to some ruling on China.


"From Apple

5. Legal: Preamble

Guideline 5.0 - Legal


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 iTunes Connect.


Next Steps


This app cannot be approved with CallKit functionality active in China. Please make the appropriate changes and resubmit this app for review. If you have already ensured that CallKit functionality is not active in China, you may reply to this message in Resolution Center to confirm. Voice over Internet Protocol (VoIP) call functionality continues to be allowed but can no longer take advantage of CallKit’s intuitive look and feel. CallKit can continue to be used in apps outside of China."


The app is currently deployed to multiple countries including China.Removing China from deployed app store or totally removing Callkit is currently out of the option. We are currently apprehensive on the proper implementation on how to disable the feature specifically just for the Chinese region without violating yet another guideline. Does anybody have the same problem or knows an acceptable approach for this?

Yes,


I got the same thing, I am using CallKit to check if the call is active or not to pause audio file I am playing in background.

I have replied back to Apple Review Team, waiting for their reply.
What CallKit functionality are you using.

We are using it for our VOIP app. We also replied to the e-mail but ,also , there has been no reply so far.

We also got the app rejected. I don't think they will approve your app based on what your app does with CallKit. The easiest thing to do is to remove the app from China Apple Store.

which type of reply you gave to Apple for App Rejection?

the same for me


I can understand Chinese market is billions of dollars for Apple.. but...

I think steve jobs wuold remove China from Apple Store, not products from chines market...

🙂

Does anyone know how Apple detect that you are using CallKit ? It‘s by package symbols or just check through App's interface?

It will be much easier to deal with the later one

Is possible to detect China App Store programmaticaly without your app have in-app purchases?

I sent another question to apple developer support and get an answer about it.

May be it's not appropriate to this thread, but I'll show you that answers as related one just in case.


I think it's black box after all....


Category : get clarification on an app rejection


Q.=====

Hello. I have a question about your review for CallKit .


We are going to implement CallKit to our application, but now we cannot use CallKit in China.

However, we must distribute our application to China.

So, I want to know the way to pass your review without register new China version application.


A.=====

Hello,

Thank you for contacting App Store Review. From your request, we understand that you would like to know how you may have future updates for your app approved due to the CallKit restrictions set in place in China.


Please bear in mind that we are unable to provide pre-approval or guidance on app ideas or concepts. After you have submitted your app, we will provide feedback during the review process, if applicable.


If we have questions about your app or any of its implementations during review, we will reach out to you directly.


Please take a moment to familiarize yourself with the App Store Review Guidelines and the App Review process before submitting your app. If you have questions while your app is being reviewed, please complete the Contact the App Review Team form on the developer portal.


We look forward to reviewing your app.


Best regards,


======

So you get no answer here !


May be you should use a support ticket instead of asking to app review team.

We have requested a TSI. The answer was:


Just to expand on the basic requirement, you are NOT required to remove

CallKit from your app entirely. While that would obviously work, it’s

sufficient that you simply not use CallKit.


I’m not able to offer a specific recommendation and App Review is not requiring a

specific technical solution. As long was you tell App Review that you’re

handling the issue, that will probably be acceptable to them.

So does that mean, If we keep CallKit in the Application but have settings to use it. But what if end user enables the settings.

There are few ways mentioned to detect the Country.

But all, like changing the region, disallowing location would allow end user to use it.

Please suggest if settings of disabling CallKit would suffice by Law.

I found this answer on Stack Overflow. The work around is whatever view controller that is using CallKit you simply make sure that it doesn't get initialized inside that view controller if the country is China. Like this

Code Block
var callObserver: CXCallObserver?
override func viewDidLoad() {
super.viewDidLoad()
if Locale.current.regionCode != "CN" ||
Locale.current.regionCode != "CHN" { // only init for countries that aren't China
callObserver = CXCallObserver()
    }
}

Disabling Callkit for China Apps
 
 
Q