我对这个问题的处理方法是受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];
}
}
Run Code Online (Sandbox Code Playgroud)
要对此进行测试,可以在“设置”>“常规”>“语言和区域”>“区域”中更改区域。当我将“地区”设置为“中国”但将语言设置为英语时,[NSLocale currentLocale]返回"en_CN"。
我过去一直CXCallObserver在观察从我的应用发起的通话状态。我无法使用CallKit监视呼叫时的一般解决方法是:
UIApplicationDidBecomeActiveNotification带有到期处理程序的UIBackgroundTask的观察者(我的应用已启用了后台模式)-applicationDidBecomeActive秒钟,因为我注意到在通话开始时通常会被调用一到两次,通常是在最初的1-3秒内。小智 3
| 归档时间: |
|
| 查看次数: |
935 次 |
| 最近记录: |