0

由于应用内购买类型,苹果第三次拒绝了二进制文件。我的应用程序使用 IAP订阅 1Month、1Year 和 Free 的包。早些时候我使用 Consumable 所以,应用程序拒绝并建议使用"Non-Renewable"。我正在关注教程“ https://www.raywenderlich.com/36270/in-app-purchases-non-renewing-subscription-tutorial ”。我已经从教程中下载了“VerificationController”类文件来验证交易。但是,我遇到了很多错误,

VerificationViewController.m
No visible @interface for 'VerificationController' declares the selector 'encodeBase64:length:'
No visible @interface for 'VerificationController' declares the selector 'decodeBase64:length:'
Implicit declaration of function 'checkReceiptSecurity' is invalid in C99
Conflicting types for 'checkReceiptSecurity'
Missing context for method declaration

CommonDigest.
Missing '@end'

谁能帮助解决这个问题并今天提交应用程序?

4

2 回答 2

0

我刚刚在这个线程上用 tkdkop 回答解决了这个问题:XCode 6 verificationController.m issues。希望这可以帮助并为其他人节省一些时间。

于 2016-10-05T12:55:48.597 回答
0

让我分享一下我的想法:首先,不可更新订阅是所有订阅中最难处理的。它由开发人员来处理:

  1. 订阅到期日期
  2. 跟踪订阅
  3. 更何况你必须提供恢复按钮,以便用户可以恢复他们的购买

以下是我的处理方式:我使用 iCloud 和后端服务器的组合来跟踪重要数据。

  1. 每当用户订阅不可更新(即购买)时,我都会存储购买日期,并在后端服务器和 iCloud 中创建相当于购买日期一个月的到期日期。请注意,我的订阅期仅为一个月。在 iCloud 商店中storeUserPurchase.set(key: nrs_key, vale: someData)
  2. 每当订阅用户想要访问订阅的材料时,我会检查是否基于存储在用户 iCloud 中的某个唯一 ID 的到期日期,使用此唯一 ID,我要求我的服务器根据此 ID 计算到期日期。如果尚未过期,则授予对材料的访问权限。就像是 purchaseInfo = getSomePurchaseDataFor(key: nrs_key) serverValidateReceiptAndGetExpirationDateFor(receipt, purchaseInfo)
  3. 我忘了提到所有这些验证以及在后端服务器中完成的收据验证。

恢复购买:您必须提供此功能,否则您的应用将被 Apple 冷拒绝。

这里是值得一读的教程

应用内购买常见问题解答

于 2017-04-19T20:50:41.910 回答