我在商店中有许多应用程序,包括几个较旧的付费应用程序。我正在发布一个新的,其中包括通过应用程序内购买的旧功能的一些功能。我真的不想向已经为旧版应用付费的客户收取双倍费用。有没有办法在我的新应用程序中检测用户是否购买了我的旧应用程序,以便我可以免费解锁相应的功能?以例子的形式:假设我有三个应用程序,A、B和C。用户在过去的某个时间购买了AppA。在AppC中,我能否检测到用户过去购买过AppA,并相应地解锁某些功能?我知道您可以使用自定义URL方案将其中的一些组合在一起,但不能保证用户仍然安装了旧版应用程序。或者,即使他们这样做了,也不能保证他们会对其运行更新,以便我可以添加自定义URL
假设我有一个巨大的应用程序内购买产品目录,价格等级各不相同。这些产品将在多个地区销售,因此需要以正确的货币显示价格。有没有一种方法可以(从iTunes)请求给定国家(当然是用户iTunes帐户所在国家/地区)的给定价格等级的货币值(value)?目前,我能看到的唯一方法是在给定价格等级的产品第一次出现时向apple发送产品信息请求,然后存储此结果。作为附带问题:我知道我可以使用我的服务器返回货币/等级组合的价格,但我担心Apple调整应用程序内价格的可能性。这有可能发生吗? 最佳答案 extensionSKProduct{varlo
我正在尝试解决我收到错误代码为0的“无法连接到iTunesStore”的问题。我知道我的应用程序标识符没有问题,因为我在应用程序启动时检索了产品信息并记录了结果,并且我从iTunes获得了正确的产品标识符和价格。当我将我的应用程序标识符更改为一些愚蠢的东西时,这会失败。由于上述原因,我知道我的产品标识符也没有问题(否则它不会起作用,我仔细检查过)。我尝试通过两种不同的方式创建SKPayment来触发购买:第一种方式SKPayment*payment=[SKPaymentpaymentWithProductIdentifier:productIdentifier];//Thisisdep
我正在实现一款iPad游戏,并希望允许玩家购买一张额外的map。我是否需要实现一个服务器并存储该购买,以便我可以处理用户更改为不同设备的情况,或者StoreKit是否会为不同设备自动处理它?也就是说,如果用户使用他的用户名在设备A上购买了额外的map,然后使用相同的用户名在新设备B上安装游戏,我是否需要做一些特别的事情,或者StoreKit会记住购买,这样他就不会收费两次? 最佳答案 这真的不需要服务器-制作“恢复购买”按钮,用户将能够在每台设备上获得他所有的“额外map”。Niceframeworktoimplementit.
我的应用程序将允许用户通过应用程序内购买升级到专业版功能。我正在用我自己的服务器验证收据数据,如果确认从我的服务器返回,我调用finishTransaction:如果验证失败(可能不是因为盗版企图)并且我没有调用finishTransaction:会发生什么?它会无限期地留在队列中吗? 最佳答案 如果FinishTransaction没有被调用,我总是发现在某些时候我会出现奇怪的行为。最好的选择是在StandardUserDefaults等中设置一个设置,指示“我买了这个但失败了”,然后调用FinishTransaction。然后,
将StoreKit添加到我的Xcode5项目后,我现在看到...“格式错误或损坏的AST文件:子模块中不匹配的伞头”...每当我从StoreKit导入任何header时。我没有更改那些系统header,清除派生数据和通常的清理构建文件夹修复也不起作用,重新启动Xcode也没有任何改变。我在报告错误的地方看到了Clang来源,但我不知道为什么。这是来自http://clang.llvm.org/doxygen/ASTReader_8cpp_source.html的相关Clang代码:caseSUBMODULE_UMBRELLA_HEADER:{03728if(First){03729Er
我有一个不可更新的应用内购买产品。当有人购买此产品时,某些内容会解锁一个月(无需下载或安装任何内容)。一个月后,要求用户再次购买不可再生产品,即:用户需要再次购买该不可再生产品。问题是,当他尝试这样做时,(测试)用户收到以下消息:You'vealreadypurchasedthisbutishasn'tbeendownloaded.Tapoktodownloaditnow.但我的产品不需要下载,之前完成的交易已经成功完成并从交易队列中移除:[[SKPaymentQueuedefaultQueue]finishTransaction:transaction];有人知道怎么做吗?
我看到很多失败的应用内购买,错误描述为ErrorDomain=SKErrorDomainCode=2"CannotconnecttoiTunesStore"UserInfo={NSLocalizedDescription=CannotconnecttoiTunesStore}.这是什么原因造成的?我在SO上找到的每个答案都是几年前的,并且说这个错误与沙盒问题或试图在模拟器中购买IAP有关。 最佳答案 根据我自己的经验,这个错误(ErrorDomain=SKErrorDomainCode=2)当用户在系统确认对话框中取消应用内购买时出
我正准备在我的iOS应用中加入订阅功能的应用内购买。根据我的阅读,我需要使用不可续订的订阅类型(不可自动续订)。一些客户欺骗系统并从Apple获得退款,但他们仍然可以使用他们的应用程序。由于不可续订的订阅必须由外部服务器(我们)处理,我们显然会记录订阅购买、收据等。有没有办法在收据验证中确定订阅是否仍然有效?我不确定不可续订订阅类型验证是否只是测试收据是否有效或订阅是否仍然有效。例如,您进行购买,收据有效。如果您通过iTunes投诉取消了与Apple的购买并且Apple给了您退款,如果我稍后再次验证该收据是否会无效?我想知道我们是否应该建立一个频繁的验证例程来捕获任何已退款的订阅。我们
Apple提供了两份关于收据验证的文件,其中的陈述显然相互矛盾。在“VerifyingStoreReceipts”中:Note:OniOS,thecontentsandformatofthestorereceiptisprivateandsubjecttochange.Yourapplicationshouldnotattempttoparsethereceiptdatadirectly.然而,在“In-AppPurchaseReceiptValidationoniOS”中提供了示例代码,其中商店收据被解析和验证,作为安全漏洞“缓解策略”的一部分://Checkthevalidityo