验证并验证应用内购买非可再生iOS

问题描述 投票:0回答:2

由于In-App购买类型,苹果第三次拒绝二进制文件。是应用程序使用IAP订阅包的1Month,1年和免费。早些时候我使用了耗材,因此app被拒绝并建议使用“不可再生”。遵循教程“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'

任何人都可以帮助解决这个问题并立即提交应用程序吗?

ios objective-c in-app-purchase xcode7 non-renewing-subscription
2个回答
0
投票

我刚刚在这个帖子上用tkdkop回答修复了这个问题:XCode 6 verificationController.m issues。希望这可以帮助并节省一些时间给别人。


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拒绝拒绝。

Here is the tutorial worth reading

In-App Purchase FAQ

© www.soinside.com 2019 - 2024. All rights reserved.