iOS如何绕过苹果内购审核

作者: mws100 | 来源:发表于2016-07-08 16:29 被阅读13534次

根据苹果公司的App Store Review Guidelines应用审核规则:

3.1.5Physical Goods and Services Outside of the App: If your app enables people to purchase goods or services that will be consumed outside of the app, you must use purchase methods other than IAP to collect those payments, such as Apple Pay or traditional credit card entry. Apps may facilitate transmission of approved virtual currencies (e.g. Bitcoin, DogeCoin) provided that they do so in compliance with all state and federal laws for the territories in which the app functions.

需要在应用内购买使用的服务,应该接入内购。最近在项目中也遇到这个情况,我们做在线教育,卖的是视频课程,所以按照apple的规则需要接入内购。但是内购是需要与apple三七分成的,价格也是需要按照apple的价格表选择,很不灵活。那么怎么解决这种问题呢,我想了这么几种解决方案:

1、直接不接入内购,在审核时隐藏相应购买模块。现讨论一种情况的代码实现方式,比如项目是Tabbar布局,购买模块是其中一个tabbar,在审核时隐藏这个tabbar。思路如下:

1)首先需要后台提供一个接口,判断是不是在审核状态。此时,会出现这么个问题,如果包含内购的版本2.0通过审核了,那下次提交2.1时,如果还使用这个接口来判断是否在审核状态的话,就不行了,因为用户已经在使用2.0了。所有,每次提交都要换个判断状态的接口。但我觉得每次都换接口有点麻烦,我是这样做的:假如2.0版是2016年7月10日提交的,那在进行请求接口之前,先判断当前时间,如果当前时间在2016年7月10号到8月10号之间,就进行请求操作,否则直接认为是非审核状态。当然这个时间段是自己定的,一个月足够上线了,也可以设置10天,毕竟每次被拒都可以改这个代码,再提交个二进制文件。说的有点啰嗦,在Demo中会有相应代码。

2)写一个VC,此VC的作用有两个:一:添加一个全屏的与启动图片一样的图片;二:进行第一步说的操作,进行时间判断和网络请求,并使用block通知外面。

3)keyWindow的RootVC先设置成第二步说的VC,在VC的block回调中做相应操作。回调参数是yes的话,再本地存储个值。此时把rootvc切换成tabbar,在tabbar中添加childVC时,根据本地的值,判断添加相应模块。

GitHub - mws100/AvoidIAPExample: 绕过苹果IAP审核的Demo

2、接入内购,同样需要一个接口,在审核时使用内购付款,通过后使用其他方式。至于内购的接入步骤,网上有很多不错的教程,github上也有不错的框架。这里各推荐一个:

内购教程:iOS开发内购全套图文教程

内购框架:RMStore

都是个人见解,有更好的方式,或对文章内容或内购流程有疑问可留言讨论。

相关文章

  • iOS如何绕过苹果内购审核

    根据苹果公司的App Store Review Guidelines应用审核规则: 3.1.5Physical G...

  • iOS内购一条龙------配置内购产品ID (2)

    步骤一 iOS内购一条龙------账户信息填写(1) 完成以上操作,并且苹果审核完毕之后,就可以配置内购产品了。...

  • iOS开发-内购丢单处理方式

    之前写了一篇关于内购的博客iOS开发-2017苹果内购最新教程,上线审核很顺利,但是上线后很多问题暴露出来.用户购...

  • 关于iOS支付苹果新的3.1.1政策

    有很多App中存在支付,由于不是那种大公司,所以都是通过绕过苹果审核而不加内购的。毕竟苹果拿走3成谁都不愿意。 现...

  • 苹果内购

    苹果内购大至分三部分:(注:接入苹果内购,应用需要提供游客登录方式,不然审核不过) 苹果后台配置 获取商品列表 购...

  • ios如何在应用内部提示更新

    大家都知道苹果目前审核时要求应用内不能出现提示升级的功能。我们如何做可以绕过苹果的审核呢? 一般解决方法就是服务端...

  • iOS 11 如何测试苹果商店内内购

    如何测试苹果商店内内购? 有什么现象? 0、苹果商店的内购,用户在苹果商店中选择内购产品时,如果用户已经安装好此应...

  • ios-内购(IAP)

    StoreKit 框架内购:在ios中专指苹果内购,在app内购买商品时使用苹果的支付方式进行购买;如果在app内...

  • iOS14 内购审核被拒

    iOS14 内购失败 审核被拒 在iOS14发布后,我们提交了新版本,但是审核被拒,审核人员说是在iOS14下购买...

  • ios 经典面试案例 (一)

    1、iOS iAP内购审核可能失败的问题## Guideline 3.1.1 - Business - Payme...

网友评论

  • 圣斗士皮皮:审核版本只有1个,设置一个审核版本号就可以判断了。这种严重违规,破坏苹果收益的行为,一旦发现封号
    my_杨哥:那该如何完美的解决呢?前提是我不想去掉支付宝和微信
  • echo海猫:我之前做的一个APP,采用的是版本号获取审核状态的,然后跳转自己的付款界面和苹果区分,钱就可以不用被分成了,但是后来上架新版本被二进制文件给查出来了,只能从新用苹果购买的方式做一遍,老老实实用苹果的方式吧
    echo海猫:@Yinper 不算特别大吧!! 只是自己的付款界面时有web界面的,记得当时驳回的邮件说了好多,具体忘记了,上架新版本无意被查出来的,也是蓝瘦啊!
    Yinper:你们的 App 体量很大吗, 我们app 也是这么做的并没有被查出来
  • louyw:你直接给苹果提供一个特定的账号不就行了??只有这个账号登录的时候才隐藏支付功能,其他用户登录一切正常,搞这么麻烦干嘛?
    ChenL:@mws100 你的无SDK 进行原生 如何第三方支付啊? h5支付也会被发现的
    davisjy:@mws100 等你的新文章呢:smile:
    mws100:@louyw 现在苹果机审,可以查出alipay等SDK。只隐藏已经不起作用,最近刚研究实现了无SDK进行原生第三方支付。有时间会更新文章
  • 噜噜噜噜噜噜噜噜:楼主我也是遇到了相同的问题,求指导啊?可以加你个微信吗?我是iOS 开发者吴露露,我的微信号是wulu1234520.你也可以加我一下!
  • 慕诩:楼主app被拒之后使用这种方法去绕过苹果的审核了吗?过了没?
    慕诩:@mws100 是使用了你说的哪种方案,接入内购还是不接入?
    慕诩:@mws100 你们项目现在还是使用这种方法绕过内购审核吗
    mws100:过了
  • EvenTime:大哥,请教一下.
    情况是这样的,应用同时接了内购,支付宝微信支付.内购只有部分商品上架了.后台有一个接口返回一个状态,根据状态判断是否在审核期间.这个状态可去后台修改.而且会影响所有的线上版本.审核的时候点击确认订单调起内购,非审核则跳转另一个控制器进行支付宝微信选择支付.
    然后有一次没有更改后台接口参数.被拒了.再次提仍被拒.因为被拒的那次是可以看到支付宝微信支付的.然后就一直未通过.是不是苹果留心了呢.......存不存在审核的时候检测是否集成了支付宝SDK呢?Alipay这个东西要检测还是很好检测的吧....审核不过很烦恼哦.去掉微信支付宝吧,公司没那想法...
    EvenTime:@mws100 这样搞,可以考虑一下。这样的项目做起来真没意思啊!
    mws100:我有一次也是这种情况,后来把三方支付都去掉,上线后。又加上三方支付 提交了一次。
  • 52aed6ebb4aa:大哥,同样是教育行业,现在被卡的死死的。 提了6次了不让过,甚至于根本没有支付模块都不行,因为他认为,我们的课程是通过其他渠道购买然后才能给用户展示, 属于内购付费项目
    张月半:请问隐藏所有付费课程及相关模块都不行吗?
    52aed6ebb4aa:@mws100 一套课程下来几W的都有,就那30%都够买几个苹果机了
    mws100:集成IAP啊
  • CoderFM:我是判断测试的账号隐藏支付的功能
    CoderFM:@DevHank 需要审核的账号,不审核的话,建议不要像我这样
    Hengry:苹果会不会注册一个新的账号呢?
  • airron:直接在后台做一个版本列表不就得了。。每个版本都对应其上线状态,然后根据当前app的版本请求审核状态(是否上线),上线的就展示购买的tabbar,,没有上线的就隐藏购买的tabbar。
    然而,劝你不要这么做,一旦被发现,帐号都会被封,得不偿失。
  • 2da761dfd0e5:我目前开发的项目之前也因没应用内支付被拒,现在公司还没有意像要搞,所以我也用接口手动控制的方法,根据正在审核的版本号来判断来隐藏某些VIP付费板块的代码,审核通过了就放开,这样升级了好几个版本,前几天上传新版本被据,但没被下架哦,现在正在想办法在糊弄一下苹果,蛋疼。 被拒原因全文翻译如下:(您的应用,扩展程序和/或链接框架似乎包含明确设计的代码,能够在应用审核批准后更改应用的行为或功能,这不符合Apple开发人员计划许可协议和应用的第3.3.2节商店审查指南2.5.2。此代码与远程资源相结合,可以帮助对应用程序的行为进行重大更改,与最初对App Store进行审核时相比。虽然当前可能不使用此功能,但它可能会加载私有框架,私有方法,并支持未来的功能更改。

    这包括将任意参数传递给动态方法(如dlopen(),dlsym(),respondingToSelector :, performSelector :, method_exchangeImplementations())和运行远程脚本以便更改应用程序行为或调用SPI的任何代码,下载的脚本。 Objective-C方法respondToSelector:和performSelector:仍然被支持和允许。例如,它们可以用于在使用选择器之前检查操作系统兼容性。但是,您应该只将选择器传递给在编译时指定的这些方法。如果您认为您使用的是静态选择器,可能是您添加到应用中的第三方框架不符合规定。即使远程资源不是故意恶意的,它也可能很容易被劫持通过中间人(MiTM)攻击,这可能对您的应用程序的用户造成严重的安全漏洞。

    请对您的应用执行深入审核,并删除与上述功能相符的任何代码,框架或SDK,然后再提交下一个更新以供审核。

    最好的祝福, )
    008b4b11b39a:那你现在怎么处理的呢?过了审核没有?我也遇到同样的问题,个推删了,友盟更新了,jspatch没用到。
    2da761dfd0e5:@mws100 我项目中并没有接入热修复,版本更新提示倒是有一个,我猜是不是可能是这个原因?
    mws100:@boya_a780 不出意外的话,你的问题 是因为项目中接入了热修复能力,尤其是jspatch,删除相应sdk即可。
  • 小圆菜陪你财务自由:您好,您说的这个方法,现在还在用吗?您的意思是把三方支付都集成到项目中,接口都写好,只是先不用?等到审核通过后再开始用?或都说你在文章中说先把三方支付先隐藏了,具体隐藏方式是什么?请教了!!!如果方便您可以留个qq或微信吗?或者您加我也行,qq:1601351210
    小圆菜陪你财务自由: @ios小霸王 没敢弄啊,怕出了问题就麻烦了,到时候亏损更多
    男人宫:兄弟,你的搞定没有
  • 04979b4ff099:想问下你们,每次更新的时候 老版本不用隐藏吧,审核人员会下载老版本检查吗?
    mws100:@云年 你好,以目前的经验,没有出现你说的这种情况,我觉得不必担心
  • CCloud:想到一个方法, (新版本号必须大于旧版本号),判断当前提交的版本号,如果当前版本号,大于应用商店的,肯定是审核状态,如果等于的时候,就是通过了. 这样有没有试过
    AllenZYQ:@大牛大神 你提交的代码中 将版本号传给后台,在审核期间后台对这个版本号 返回fasle 通过后 和后台沟通 返回true
    大牛大神:那应用商店的版本号你又是怎么获取到的呢?
    到底这种跳过失败了会发生什么情况呢?
    mws100:@CCloud 嗯,应该可以:+1:
  • 混不吝丶:作者在吗? 有两点疑问 : 1 、 为什么要做时间判断呢 ? 在审核状态的话后台直接返回一个非1的值 ,审核通过后,台直接返回 1 这样可以吗? 2 、 这样绕过审核存在什么风险吗,苹果发现后会不会被强制下架?
    mws100:10多个了吧
    混不吝丶:@mws100 从接入三方支付到现在 更新迭代了几个版本了?
    mws100:@混不吝丶 1、可以啊,我的意思没有后台接口时可以判断下时间,有接口更好啊。2、肯定有这个风险的,但苹果发现的可能性不大吧。3、我们没有这样做,我们接了内购和三方支付,审核时隐藏三方支付 只能使用内购,上线后放开三方支付
  • 西西西瓜sama:最近我们也有类似需求,但感觉还是不是长久之计,用户量上来以后 苹果发现肯定会把你下架的
    西西西瓜sama:@DevHank 没有
    Hengry:有更好的解决方案吗?
    小鱼吐的泡泡:他们会发现吗?

本文标题:iOS如何绕过苹果内购审核

本文链接:https://www.haomeiwen.com/subject/nulkjttx.html