最近,中国工业和信息化部(MIIT)要求在中国App Store上的所有应用程序中停用CallKit功能。在我们的审核过程中,我们发现您的应用目前包含CallKit功能,并已将中国列为iTunes Connect中的可用区域。
现在,问题是下一步,应用程序需要哪种更改
如果没有办法,我如何从Apple商店中删除中国。
如果有人遇到这类问题,请分享您的建议。
此致
答案 0 :(得分:3)
我对这个问题的处理方式受到了Apple Developer forums上的回应的启发。目前,开发人员的普遍共识似乎是App Review没有给出具体建议,他们目前也没有解释或要求特定的技术解决方案。我认为,只要您可以向App Review解释如何为中国用户禁用CallKit,就可以接受。
我在下面讨论时更新了我的应用程序,它首先通过了App Store审查,并于2018年7月24日在中国重新发布。
当我将更新后的应用程序提交到App Store时,我在审阅者信息部分添加了一条简短消息
“ 在此版本及更高版本中,我们不为中国用户使用CallKit功能。我们使用NSLocale检测用户所在的区域。”
我的应用在12小时后获得批准,没有来自应用审核小组的任何问题或评论。
检测中国用户
在我的应用中,我使用NSLocale来确定用户是否在中国。如果是这样,我不会在我的应用程序中初始化或使用CallKit功能。
- (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];
}
}
要对此进行测试,可以在“设置”>“常规”>“语言和区域”>“区域”中更改区域。当我将“地区”设置为“中国”但将语言设置为英语时,[NSLocale currentLocale]
返回了"en_CN"
。
我正在使用CXCallObserver
来观察从我的应用发起的呼叫状态。当我无法使用CallKit监视呼叫时,通常的解决方法是:
UIApplicationDidBecomeActiveNotification
观察者(我的应用已启用了后台模式)-applicationDidBecomeActive
通常在通话开始时被叫一次或两次,通常在最初的1-3秒内。答案 1 :(得分:0)