热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

此应用无法通过在中国活跃的CallKit功能获得批准.请进行相应更改,然后重新提交此应用以供审核

如何解决《此应用无法通过在中国活跃的CallKit功能获得批准.请进行相应更改,然后重新提交此应用以供审核》经验,为你挑选了1个好方法。

最近,中国工业和信息化部(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秒内。


推荐阅读
author-avatar
国国国国涛
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有