Tag: 在应用程序内购买

应用内购买在iOS 8上失败,说用户细节不正确

我们有一个应用程序内购买的应用程序,在iOS 7上工作正常。但是,在iOS 8上,当用户试图购买应用程序中的任何内容时,应用程序内购买失败,错误“您input的Apple ID cann'找不到或您的密码不正确。 请再试一次“,即使这个ID /密码是(我们认为)是正确的。 这发生在我们testing的任何iOS 8设备上(有六种不同型号的iPhone和iPod Touch),发生在8.0,8.0.1和8.0.2上。 我们尝试了许多不同的Apple ID,并且无论TouchID或密码是否用于身份validation,都会发生这种情况。 在iOS 7上的实时版本以及在iOS 8上的Ad Hoc版本中,购买工作正常。只有iOS 8上的实时版本存在此问题。 在现场版本中恢复购买也适用于所有设备。 有没有人碰到这个,能想到可能是什么问题?

iOS应用内购买退款 – 由开发者触发,而不是由最终用户触发

案件: 我们的iOS应用程序提供销售定制的食谱包,将专门为每个用户创build。 例如,用户购买配方软件包,但是对于每个用户,该软件包将根据用户的喜好和需求,由应用程序团队中的某个人单独创build。 例如,这个软件包应该在5天内创build。 如果应用程序团队未能在5天内创build此包并交付给最终用户,则应该触发自动退款,并且最终用户应该收回他在应用程序购买时花费的钱,从而使购买的定制包无效。 问题: 在苹果/ iOS世界中,这种情况甚至是可能的吗? 应用程序开发者可以触发最终用户所做的特定购买的退款过程吗? 如果用户对特定购买不满意,应用程序开发人员是否可以触发这个退款stream程? PS我们并不是真正销售自定义配方包,这只是一个示例场景,以帮助理解这种退款情况。 ;) 编辑: 如果这种情况是不可能通过苹果退款的,是否有一些这样的购买模式的例子,以其他方式实施? 我很难理解,只有最终用户才能获得退款的方式是编写苹果,而且这也需要用户自己完成。

苹果应用程序内购买和物理/数字商品

我知道应用程序内购买不能用于购买在应用程序中显然不可用的实物商品。 但是如何处理以下案件? 我有一个应用程序,它提供了一些免费的内容(图片,活动等)和其他使用应用程序内购买付费的应用程序。 在这里我没有问题。 但是,如果部分业务模式包含年度订阅,会员可以访问打印内容以及通过IAP收费的数字订阅,会发生什么? 也就是说,会员资格使您有资格购买实物商品和免费的数字(以前是可收费的)商品。 这个模型不再需要IAP了。 苹果如何解决这个问题? 考虑到实物商品是否涉及,我可以使用外部支付方法吗? 感谢您提前帮助AF

iOS“此应用内购买已被购买”popup

我在iOS应用程序中遇到了问题:当我点击“购买”button购买IAP产品时,会popup一个消息,显示以下消息: 此应用内购买已被购买。 它将被免费恢复。 我以前从未有过这种popup窗口,而我的产品只是不续订的订阅 ,所以我想知道为什么在购买订阅时出现此消息。 当我触摸确定closures此popup窗口时,购买不会执行。 这是我的代码: for transaction in transactions { switch transaction.transactionState { case SKPaymentTransactionState.Purchased, SKPaymentTransactionState.Restored: print("Transaction completed successfully.") SKPaymentQueue.defaultQueue().finishTransaction(transaction) transactionInProgress = false // Sauvegarde le produit acheté savePurchasedProduct(transaction.transactionDate!); break case SKPaymentTransactionState.Failed: print("Transaction Failed"); SKPaymentQueue.defaultQueue().finishTransaction(transaction) transactionInProgress = false break default: break } }

在iOS中恢复购买

我正在恢复购买,所以我有一些疑问 1)如何显示恢复button 我已经在左上angular显示了它,点击它就可以调用这个函数 – (IBAction)restorePurchases:(id)sender { [[SKPaymentQueue defaultQueue] addTransactionObserver:self]; [[SKPaymentQueue defaultQueue]restoreCompletedTransactions]; } 但是,如果用户没有购买任何项目,或者如果用户已经购买了一个项目但没有删除并重新安装了应用程序,该怎么办?是否还需要显示restoreButton,如果是,点击它应该是什么行为。 2)现在,如果我已经购买一个项目,并删除应用程序,并重新安装应用程序,并点击恢复button,它调用此function – (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions { for (SKPaymentTransaction *transaction in transactions) { switch (transaction.transactionState) { case SKPaymentTransactionStatePurchased: [self completeTransaction:transaction]; break; case SKPaymentTransactionStateFailed: [self failedTransaction:transaction]; break; **case SKPaymentTransactionStateRestored: [self restoreTransaction:transaction];** default: break; } } } 但现在,假设我不是anyitem,只需点击恢复button,它要求我为我的苹果ID,进入苹果ID后,没有任何反应,它不调用上述function,我想知道为什么发生这种情况。 此外,我想显示一条消息给用户,没有项目要恢复,所以我该怎么做。 我search了这一点,他们是一个委托函数将被调用,如果没有交易retore – (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue { […]

无法复制苹果iOS应用程序审查崩溃

我最近将我的iOS应用程序提交给Apple进行审查。 它是用C#编写的,使用Xamarin iOS,Monotouch和Monogame。 我使用Xamarin IDE进行开发。 一个星期后,我收到一个拒绝,指出当审阅者试图访问应用程序内购买商店时,应用程序在iPad上崩溃的原因,而在iPhone 5s上,它不会崩溃,但表明它不能到达Apple服务器以检索商店物品。 我的商店大部分检索代码是从这里find的Xamarin指南。 问题是我无法复制这些崩溃。 商店打开我很好,我广泛的testing。 我testing了所有的模拟器,以及debugging和发布configuration中的许多真实设备(iPhone 4,iPhone 5,iPhone 5s,iPad第三代)。 我没有在ad-hoc模式下进行testing,因为这些设备中的很多都是从我的朋友那里借来的,我不想在iTunes中同步,因为这可能会清除设备数据。 所以我希望发布版本和特设的等同于find审查小组的bug。 至于苹果给我的崩溃日志,他们没有帮助我,因为大多数的行都没有在Xcode中使用我提交给苹果公司的相同的存档文件进行正确的符号化。 日志中有很多'__lldb_unnamed_function'行。 所有我能够告诉的是,试图检索商店时发生了崩溃。 因此,我坚持不知道下一步该做什么。 build议表示赞赏。 以下是长期崩溃日志的最后部分。 Incident Identifier: 24777CEA-21FF-434B-A658-BFB4BC89F7B2 CrashReporter Key: e981dd69858f1d35ba231cd2e288f3d33625919f Hardware Model: xxx Version: 1 (1) Code Type: ARM (Native) Parent Process: launchd [1] Date/Time: 2014-01-09 13:30:21.579 -0800 OS Version: iOS 7.0.4 (11B554a) Report Version: 104 Exception […]

如何在整个应用程序中继续进行应用内购买? (从多个视图中移除广告)

我已经编写了应用程序内购买的代码来删除广告,它的工作原理完美无瑕,除了它只适用于我从中删除广告的视图控制器。 我希望它贯穿整个应用程序。 我该怎么做? 更好的理解 : 我在我的应用程序中的几个视图控制器上有广告。 我有一个信息视图控制器,您可以购买删除广告。 事情是:它不会继续到我的其他意见,就好像我回到菜单视图控制器。 另外,当我回到“信息”视图时,它仍然有广告,直到我从购买恢复。 我不希望用户不断地恢复购买。 如何使这个工作?

继续在Apple的VerifyReceipt上得到21002'java.lang.NullPointerException'

当我尝试在沙箱中testing我的应用程序内购买时,我一直在从Apple获取21002'java.lang.NullPointerException'错误。 这是我所做的: 在iTunes Connect中设置应用内购买产品。 我可以通过StoreKit成功检索它们。 在iTunes Connect中设置testing用户。 应用程序启动,下载可用的应用程序内购买产品,我触发应用程序内购买,苹果响应与transactionReceipt,我base64编码在iPhone上,并发送到我的C#/ ASP.NET服务器。 服务器把收到的string放入JSON(我用NewtonSoft.Json和手动的方法试了一下),然后把JSON发送给Apple: var json = "{ 'receipt-data': '" + receipt + "'}"; 要么: var json = new JObject(new JProperty("receipt-data", receipt)).ToString(); 接着: var webRequest = System.Net.HttpWebRequest.Create("https://sandbox.itunes.apple.com/verifyReceipt"); webRequest.ContentType = "text/plain"; webRequest.Method = "POST"; byte[] byteArray = Encoding.UTF8.GetBytes(receipt); webRequest.ContentLength = byteArray.Length; using (var stream = webRequest.GetRequestStream()) { stream.Write(byteArray, 0, byteArray.Length); […]

应用内购买是否适用于电子书/有声读物?

我们是一家卖硬封面,电子书和有声读物的书店。 我们有一个网站,我们接受客户在线支付的信用卡。 我们也有一个iOS和Android应用程序,用户可以读/听所购书籍。 现在我们要通过我们的iOS原生应用程序(以及未来的Android应用程序)销售电子书和有声读物。 客户可以从我们的应用程序购买电子书/audio书籍,并可以在所有平台下载和阅读。 我们有相当多的书名,5万以上的扩展。 什么是实施这个最好的方法? 应用内购买是强制性的吗? 还是应该使用现有的信用卡支付系统?

Unity IAP不能初始化

我使用Unity“采购员脚本”(在Unity的IAP示例中)来testingIAP,但是他们在testing期间不会在电话上初始化,即使他们初始化并传入编辑器。 我理解Unity编辑器总是通过IAP,这意味着我没有在苹果方面做任何事情。 iTunes连接状态,IAP必须与应用程序更新提交,所以我没有看到我可以单独创buildiTunes Connect上的IAP进行testing。 有人可以帮我理解我从哪里去,能够初始化和使用IAP? 所有的帮助是非常感激的。 注意:这是对不包含IAP的应用程序的更新。 此外,我已经确定我的产品ID与我的脚本中的产品ID匹配。 概要: IAP在统一编辑器中工作,而不是在iPhone上 我在itunes connect上创build了IAP,并且在我的脚本中有一个匹配的产品ID,这是Unity提供的“Purchaser Script”(在此处显示: https : //unity3d.com/learn/tutorials/topics/analytics / integrate-unity-iap-your-game ) 错误是在购买的初始化,它是失败的。 采购代码: using System.Collections.Generic; using UnityEngine; using UnityEngine.Purchasing; // Placing the Purchaser class in the CompleteProject namespace allows it to interact with ScoreManager, one of the existing Survival Shooter scripts. //namespace CompleteProject //{ // Deriving the […]