验证和验证应用内购买不可再生 iOS

Posted

技术标签:

【中文标题】验证和验证应用内购买不可再生 iOS【英文标题】:Validate and Verify In-App purchase Non-Renewable iOS 【发布时间】:2016-03-22 06:55:05 【问题描述】:

由于应用内购买类型,苹果第三次拒绝了二进制文件。我的应用程序使用 IAP订阅 1 个月、1 年和免费的包。之前我使用了 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'

谁能帮忙解决这个问题并立即提交应用程序?

【问题讨论】:

嗨@Yuvaraj.M 你找到解决方案了吗?即使我遇到同样的问题 嗨@pooja_1205 我没有找到解决方案,之后我们放弃了 IAP 集成。如果您找到此问题的解决方案,请在此处分享您的答案。这可能对每个人都有帮助。如果我得到解决方案,我会在这里分享。谢谢。 【参考方案1】:

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

【讨论】:

【参考方案2】:

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

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

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

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

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

Here is the tutorial worth reading

In-App Purchase FAQ

【讨论】:

以上是关于验证和验证应用内购买不可再生 iOS的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 本地(设备上)收据验证和应用内购买检查

iOS:React Native:应用内购买:收据验证

Firebase iOS SDK 如何执行其应用内购买验证?

IOS应用内购买验证或数据检索

iOS中应用内购买的服务器端验证最佳实践

iOS 6 - 如何验证应用内可更新订阅?