作者:国国国国涛 | 来源:互联网 | 2022-12-16 15:56
最近,中国工业和信息化部(MIIT)要求在中国App Store上的所有应用程序中停用CallKit功能.在我们的审核过程中,我们发现您的应用目前包含CallKit功能,并且已将中国列为iTunes Connect中的可用区域.
现在,问题是下一步,应用程序需要哪种更改
如果没有办法,我如何从Apple商店中删除中国.
如果有人遇到这类问题,请分享您的建议.
问候,
1> Natalia..:
我对这个问题的处理方法是受Apple Developer论坛上的回应启发的。目前,开发人员的普遍共识似乎是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监视呼叫时的一般解决方法是:
通话开始时保存NSDate
UIApplicationDidBecomeActiveNotification
带有到期处理程序的UIBackgroundTask的观察者(我的应用已启用了后台模式)
当应用程序从后台返回时,请检查经过的时间,如果时间少于5秒且少于90分钟,请假定通话已结束并保存(我需要跟踪通话时间)。
如果调用了backgroundTaskExpirationHandler,则假定调用已结束并保存结束时间。
我决定等待至少5 -applicationDidBecomeActive
秒钟,因为我注意到在通话开始时通常会被调用一到两次,通常是在最初的1-3秒内。