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.
Now, Question is what next, Which kind of changes require in app
If there isn't any way, How can i remove china from Apple store.
Please share your suggestion if anyone faced this kind of problem.
Regards,
My approach to this issue was inspired by this response on the Apple Developer forums. The general developer consensus right now seems to be that App Review is not giving specific recommendations nor are they currently explaining or requiring a specific technical solution. I think that as long as you can explain to App Review how you’re disabling CallKit for users in China, that would be acceptable.
I updated my app as I discuss below and it passed App Store review first try and we re-released in China on July 24, 2018.
"In this version and onwards, we do not use CallKit features for users in China. We detect the user's region using NSLocale."
Detecting users in China
In my app, I use NSLocale to determine if the user is in China. If so, I do not initialize or use CallKit features in my app.
- (void)viewDidLoad {
[super viewDidLoad];
NSLocale *userLocale = [NSLocale currentLocale];
if ([userLocale.countryCode containsString: @"CN"] || [userLocale.countryCode containsString: @"CHN"]) {
NSLog(@"currentLocale is China so we cannot use CallKit.");
self.cannotUseCallKit = YES;
} else {
self.cannotUseCallKit = NO;
// setup CallKit observer
self.callObserver = [[CXCallObserver alloc] init];
[self.callObserver setDelegate:self queue:nil];
}
}
To test this, you can change the region in Settings > General > Language and Region > Region. When I set Region to 'China' but left language set as English, [NSLocale currentLocale]
returned "en_CN"
.
I was using CXCallObserver
to observe the state of a call initiated from my app. My general workaround when I could not use CallKit to monitor the call was:
UIApplicationDidBecomeActiveNotification
with a UIBackgroundTask with expiration handler (my app already has background modes enabled)-applicationDidBecomeActive
was often called once or twice as the call began, usually within the first 1-3 seconds.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With