Tag: 应用内购买

iOS,核心数据,更新数据模型 – 它是如何工作的?

文件前言 假设,我有一个iOS应用程序,它是一个图书阅读器,它使用Core Data来存储图书数据。 我的应用程序的第一个版本使用一个相当简单的数据模型,我以后会更新。 我想通过“In App Purchase”出售我的书籍。 题 如果我使用新的数据模型更新应用程序, iOS应用程序是否将负责将旧书籍转换为新版本的数据模型? 说, iPhone或iPad将不得不转换它们? 我将如何激励用户在新版本中购买图书(在我的应用程序中)时将其应用程序更新为新版本,同时还保留旧版本的应用程序?

以编程方式为应用程序内购买添加导出types的UTI

我想有一个In-App Purchase ,允许我的用户从电子邮件和其他应用程序导入文件。 为此,我需要将Exported Type UTI密钥添加到我的.plist文件中。 问题是,我不想这样做,直到用户做了In-App Purchase 。 一旦他们这样做,那么我想要允许这个function。 是否有可能以编程方式将Exported Type UTI添加到我的.plist? 还是有另一种首选的方式来提供使用In-App Purchasing ?

使用带有ID的非易耗品应用内购买

我正在使用应用程序内购买在我的应用程序的行为从应用程序获取一些声音到iPhone作为铃声。 我已经使用“消费品”作为应用内购买的types,以便用户能够购买铃声并直接下载。 然而,这个应用程序被苹果拒绝,因为他们希望这个function是非消费品(所以你将能够检索这个铃声不止一次)。 我只是不知道如何设置在我的应用程序,因为有超过200个可能的铃声。 实际购买不是困难的部分,但作为应用内购买的标准,您需要能够恢复以前的交易。 由于我只使用一个产品标识符,因此在恢复时,我认为我无法识别哪些铃声已被购买。 所以我的最后一个问题是:1.如何识别哪个项目被购买(即通过在购买中使用标签)? 2.我只能使用1个产品标识符进行应用程序内购买。 或者我需要为每个铃声制作一个productIdentifier?

获取购买产品列表,inApp购买iPhone

我正在为我的iOS应用程序购买应用程序。 苹果已经拒绝我的二进制文件不恢复购买的产品。 在我的应用程序中,一旦用户点击产品图标(如果项目被locking),他/她就会直接进入inApp购买stream程,否则产品会被打开。 没有可视的购买button。 现在苹果说要提供恢复button? 有人可以告诉我如何处理这个? 我努力了 – (void) checkPurchasedItems { [[SKPaymentQueue defaultQueue] restoreCompletedTransactions]; }// Call This Function //Then this delegate Function Will be fired – (void) paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue { alreadyPurchasedItems = [[NSMutableArray alloc] init]; NSLog(@"received restored transactions: %i", queue.transactions.count); for (SKPaymentTransaction *transaction in queue.transactions) { NSString *ID = transaction.payment.productIdentifier; [alreadyPurchasedItems addObject:ID]; } } 在应用程序启动但paymentQueueRestoreCompletedTransactionsFinished方法永远不会被调用,以便我可以得到已经购买的物品清单,然后直接通知用户,如果他/她已经购买了。

如何让付费会员进入我的iOS应用程序的一些部分与应用程序内购买?

我正在开发一个应用程序,其中只有付费用户才能在iOS中使用应用内purhcase系统购买该部分。 我知道我需要自己跟踪购买历史,这就是问题出现的地方。 我有一个数据库,我有能力存储在我的数据库中的用户,与Web服务接口。 我如何创build一个系统, 只有在用户进行购买时才能 ping通url。 举个例子,我有这个url: http://example.com/registerUserPremium/userid=123456 我怎样才能得到这个只有在购买时被称为? 最优雅的方式就像Apple在购买时用一个特殊的用户ID ping URL,但我找不到一个方法。 这显然不是让用户在应用程序中调用URL的解决scheme,因为它可以被破解/盗版。 提供这种防盗版机制的好方法是什么? 我的服务是基于networking的,所以如果我能完成这个部分,剩下的依赖于我的服务器端机制(用户只需发送一个存储在钥匙串中的特殊密钥到服务器),所以我将能够完成这个项目。 简而言之,我只需要在购买时调用URL。 什么是可能的解决scheme? 谢谢, 能够。

如何将iOS应用程序内购买同步到其他平台上的用户帐户

我的团队正在开发数字音乐应用程序,用户可以在智能手机上从本地艺术家那里购买音乐。 我们的目标是Android和iOS平台。 我们的Android应用程序(以及其他)有以下支付机制: PayTM钱包 信用卡 网路银行 我们的Android应用程序通过了审查,并在Play商店中生效。 我们在iOS上使用相同的付款机制 – 苹果公司拒绝了我们的提交说: 我们注意到,您的应用程序可以通过除应用程序内购买API之外的其他方式来购买应用程序中的内容,服务或function。 具体来说,您的应用程序使用PayTM钱包系统。 考虑到我们的商业模式,遵循苹果应用内购买指导原则的最佳方式是什么,而且是以真正跨平台的方式运作的。 基本上,为帐户购买的内容应该与用户login的所有设备同步,而不pipe平台如何。 但是,我们不介意使用苹果的IAP模型: 用户在iOS上的购买被映射到他的Apple ID,该ID不会映射到我们平台上的帐户。 根据苹果的指导方针: 非消耗品是应用程序内购买,只需要由用户购买一次,并可用于注册到用户的所有设备。 我们的音乐是由艺术家定价的(0.5美元,2.4美元),而苹果则要求他们的应用内购买产品处于特定层次(第1层:0.99美元,第2层:1.99美元等) app store允许每个应用最多包含1000个IAP ID。 当我们有超过1000个不同的项目出售时,我们如何才能将产品ID唯一地映射到音乐片段?

iOS 7 StoreKit中的payment.applicationUsername用于应用内购买

在WWDCvideo“使用应用内购买的商店套件”中,发言者描述了添加payment.applicationUsername作为客户账户名称的散列。 payment.applicationUsername = hash(customerAccountName); 我无法在任何地方find文档。 我不认为customerAccountName和GUID是一样的,那么我们在哪里可以获得这些信息呢?

iOSconfiguration门户 – 应用程序ID

我在App Store中有一个应用程序,最近更新。 我添加了一个应用程序内购买。 iOS Provisioning Portal中创build的应用程序ID说明应用程序内购买不可用: 然而,它工作得很好…所以我的问题是什么是应用程序ID和我需要它?

自动订阅应用内购买:恢复后续续订

根据苹果应用内购买编程指南: 每次续订订阅时,App Store都会创build一个单独的事务。 当您的应用程序恢复以前的购买时,Store Kit会将每个事务交付给您的应用程序。 让我们想象我的应用程序订阅是仅客户端(无服务器组件)。 validation后续更新是否已经结算的最简单方法似乎是恢复以前的购买每月。 但是 ,每次调用restoreCompletedTransactions ,都会popup用户的iTunes密码提示,这似乎是不好的用户体验。 唯一的办法是使用服务器收据validation码(以及新的“共享密码”)?

修补程序内购买黑客; 卡在第四步

正如我们许多人所知道的那样,苹果最近出现了一种情况,黑客可以免费获得任何应用内购买。 苹果最近发布了这个文档描述如何修补它,但我有点困惑在第四步,并会感谢任何帮助。 第一步是下载他们的补丁.h和.m,将其包含在您的项目中,并将其与安全框架链接。 好的,好的,明白了。 然后苹果说: 4. Provide a base64 encoder, a base64 decoder, and the action to perform when validation succeeds. 关于编码器的部分到底意味着我应该做什么? (validation成功时执行的操作对我来说很清楚。)当然,我会在类中看到名为base64_encode和base64_decode的函数。 但是这是什么要求呢? 这就像我知道的一个特殊的PIN码,以防止黑客? 我不确定在这里做什么。 当然,我得到编码和解码的整体概念,但不是如何在这种情况下正确生成编码和解码的编程细节。 苹果公司的代码写道,如果这有助于任何: – (NSString *)encodeBase64:(const uint8_t *)input length:(NSInteger)length { #warning Replace this method. return nil; } – (NSString *)decodeBase64:(NSString *)input length:(NSInteger *)length { #warning Replace this method. return nil; […]