iOS-Guideline 2.5.2 - Performance - Software Requirements问题

最近上架更新版本的时候,又被拒了。哎,审核被拒次数多了,习惯了。日常查看反馈原因,有道翻译被拒内容。

2.5.2被拒.png

一看邮件内容,我去,不得了啊。大致内容:您的应用程序使用itms-services URL计划安装一个应用程序。还说我的应用之后会被延期审核。
一脸懵逼,然后仔细回想:
1.猜想是不是因为程序里写了一个版本更新提示的原因呢?(之前在Appdelegate.m文件中写了一个对比当前版本与苹果商店最新版本的方法,若当前不是最新版本,则提示用户“有新的版本更新,请前往AppStore更新”,仅仅是一个提示而已,并不是热更新)这个理由连我自己都说服不了,果断排除。
2.猜想是不是项目中的屏蔽审核被发现了呢?(之前为了躲避IAP苹果内购的问题,在Appdelegate.m文件中写了一个检测当前时间是否为审核期间的方法,以此来决定支付页面是否要跳转IAP内购页面)这个方法是通过后台提供的一个接口实现的,于是赶紧浏览器访问了一下这个接口,发现是正常的,而且这个也与邮件描述不一致,所以也排除。
3.网上查找资料说:大概是由于引入某些第三方SDK时,SDK中带有类似的安装程序代码,建议排查所有的SDK,建议移除所有不用的SDK。于是,疯狂一顿查,最后废了好大劲,真的找到了,在即时通讯代码的一个getVersionInfo类方法中。

+ (void)getVersionInfo:(void (^)(BOOL, NSString *))completeBlock{
    [RCDLoginAPI getVersionInfo:^(NSDictionary *versionInfo) {
        if (versionInfo) {
            BOOL isNeedUpdate = [[versionInfo objectForKey:@"isNeedUpdate"] boolValue];
            NSString *finalURL = nil;
            if (isNeedUpdate) {
                //获取系统当前的时间戳
                NSDate *dat = [NSDate dateWithTimeIntervalSinceNow:0];
                NSTimeInterval now = [dat timeIntervalSince1970] * 1000;
                NSString *timeString = [NSString stringWithFormat:@"%f", now];
                //为html增加随机数,避免缓存。
                NSString *applist = [versionInfo objectForKey:@"applist"];
                applist = [NSString stringWithFormat:@"%@?%@", applist, timeString];
                finalURL = [NSString stringWithFormat:@"itms-services://?action=download-manifest&url=%@", applist];
            }
            if (completeBlock) {
                completeBlock(isNeedUpdate, finalURL);
            }
        }
    }];
}

然后我想说:我就是个笨蛋,邮件里明明提出了itms-services这个违规关键字,我竟然没有想到去全局搜索一下。所以正确的做法是:直接在 “Find>Text>Containing”中搜索“itms-services”,即可直接锁定问题代码位置。


itms-services.png

当然,为了保险起见,我还全局搜索了所有调用getVersionInfo方法的代码,并做了相应的屏蔽处理。
最后,我还有一个疑问:当时即时通讯功能刚刚完成,本次更新版本的时候,我还把即时通讯入口给屏蔽了,也就是说,我的安装包根本不可能执行到这句代码,那么苹果审核是怎么查到的呢?苹果审核已经这么强大了吗?已经可以检测到我程序内的代码了???

你可能感兴趣的:(iOS-Guideline 2.5.2 - Performance - Software Requirements问题)