苹果APP审核被拒绝-关于“程序使用或引用非公开api”问题

审核 二进制文件被拒绝
Your app uses or references the following non-public APIs: xxx,xxx

年前上线的版本因为使用系统非公开api导致了二进制文件被拒绝没审核过,总结下如何解决问题通过审核

  • 如何在项目上线前检查是否引用了系统非公开api,防止审核被拒
  • 如果在万不得已的情况下使用系统非公开api,如何规避Apple的审查、通过审核

1、在项目上线前检查是否引用了系统非公开api

  • 如果您正在使用第三方库,请更新到这些库的最新版本。
  • 如果您没有访问库的源代码,您可以使用“字符串”或“otool”命令行工具搜索已编译的二进制文件。“strings”工具可以输出库调用的方法的列表,“otool -ov”将输出Objective-C类结构及其定义的方法。

2、使用了系统非公开api 也可以通过审核

比如项目代码[target isKindOfClass:NSClassFromString(@"CAMViewfinderView")],其中的CAMViewfinderView就是系统非公开的api,Apple审核的时候检查到了这个字符就会直接把你的项目打回来并告诉你“二进制文件被拒绝”,但是我的项目里不写这个方法就会出现各种bug,怎么办?
其实只要不让项目里直接出现“CAMViewfinderView”这个字符串就不会被Apple检测到了,既不用动太多代码影响功能,也能通过审核的两种方法:

1. 动态拼接字符串
比如把“CAMViewfinderView”拆分成好几个字符串,这样调用这个方法[target isKindOfClass:NSClassFromString(str1,str2,str3,str4)] (str1,str2,str3,str4拼起来就是CAMViewfinderView)
2. 加密处理系统非公开api
统一加密工具,在程序外先加密好你调用的api字符串

  • 比如先把“CAMViewfinderView”加密成"Q0FNVmlld2ZpbmRlclZpZXdDb250cm9sbGVy"
  • 然后在app方法里先解密"Q0FNVmlld2ZpbmRlclZpZXdDb250cm9sbGVy"decodeStr,
  • 再调用[target isKindOfClass:NSClassFromString(decodeStr)]

加密的方法是亲测成功通过审核的所以总结分享下。
整个方法都没直接出现系统的非公开api,但实现的方法是没有任何变化,再提交就能审核通过
注意:还是尽量不要调用系统非公开api;如果你使用上述方法避开审核一定要写好修改注释或者文档,否则后面时间一久维护起来就相当麻烦了。

小礼物走一走,来简书关注我



作者:wxkkkkk
链接:https://www.jianshu.com/p/f21745df8baa
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值