Tag: storekit

StoreKit返回无效的产品标识符 – 仅在真实的App Store上,仅在iOS7上

我们有一个应用程序查询StoreKit的产品细节正常(你可以忽略它是一个Xamarin应用程序,它应该没有什么差别,除非有Xamarin的错误): var request = new SKProductsRequest( new NSSet( … ) ); _runningRequests.Add( request ); request.ReceivedResponse += HandleReceivedResponse; request.RequestFailed += HandleRequestFailed; request.RequestFinished += HandleRequestFinnished; request.Start(); // …. void HandleReceivedResponse( object sender, SKProductsRequestResponseEventArgs e ) { ViewModel.IsProcessing = false; foreach (var item in e.Response.InvalidProducts) Console.WriteLine( "Invalid product: " + item ); var products = e.Response.Products.Select( x => […]

SSErrorDomain,SKReceiptRefreshRequest,SKRequest确实失败,错误,代码= 16,代码= 110

iOS 9.2.1,Xcode 7.2.1,ARC启用 我正在使用以下方法来检查SKProductsRequest和SKReceiptRefreshRequest失败: – (void)request:(SKRequest *)request didFailWithError:(NSError *)error { NSLog(@"error: %@", error); } 我的问题是具体关于SKReceiptRefreshRequest 。 我正在testing两个条件,(1)当用户取消login到iTunes Store收到的请求和(2)当用户试图login,并没有连接(空中平面模式)。 我得到以下错误: 当没有连接时: 错误域= SSErrorDomain代码= 110“无法连接到iTunes Store”UserInfo = {NSLocalizedDescription =无法连接到iTunes Store,NSUnderlyingError = 0x13c76d680 {错误域= NSURLErrorDomain代码= -1009“无法连接到iTunes商店”UserInfo = {NSLocalizedDescription =不能连接到iTunes Store,NSErrorFailingURLStringKey = {您的产品ID和相应的URI在这里} ,_kCFStreamErrorCodeKey = 8,_kCFStreamErrorDomainKey = 12,NSLocalizedDescription =互联网连接似乎处于脱机状态。}}} 当用户点击取消时: 错误域= SSErrorDomain代码= 16“无法连接到iTunes Store”UserInfo = {NSLocalizedDescription =无法连接到iTunes Store,NSUnderlyingError = […]

iOS应用内购买:沙箱无效的产品ID

背景稍微奇怪的设置之前,我遇到的问题:在一个客户端的应用程序工作,我们正在使用一个不同的iTunes开发者帐户,而不是最终将发布的一个应用程序的开发和Ad-Hoc生成有Game Center和IAP集成。 显然,我们最终将不得不在最终版本帐户上复制我们的设置,但这个问题似乎是不相关的。 问题是试图在沙箱中testing应用内购买。 我们在临时账户中没有任何税务/银行信息,没有以我的名义设置,所以我不能只加我的。 现在,每次我们发送一个SKProductsRequest和一个产品标识符,这个产品标识符是我在临时应用账户的iTunes Connect部分添加的产品标识符,它会作为一个无效的产品标识符返回到响应中。 此请求其中identifiers是一个数组与string产品标识符我试图得到: _productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:identifiers]]; _productsRequest.delegate = self; 而这个委托方法: – (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response { /*Other code for handling valid responses*/ for (NSString *invalidProductId in response.invalidProductIdentifiers) { DLog(@"Invalid product id: %@" , invalidProductId); } } 为此标识返回这个日志: -[InAppPurchaseManager productsRequest:didReceiveResponse:] Invalid product id: [Product ID That matches the […]

我应该何时validation应用内购买交易收据?

我的意思是,我的脚步应该是? 1)获得SKPaymentTransactionStatePurchased 2)从SKPaymentQueue中删除它,并通过[[SKPaymentQueue defaultQueue] finishTransaction: transaction];提供内容[[SKPaymentQueue defaultQueue] finishTransaction: transaction]; 3)validation收据,然后,如果它是无效的,阻止我刚刚提供的内容 或者我应该改变第二步而不是第三步? 1)获得SKPaymentTransactionStatePurchased 2)validation收据,如果无效,则不提供内容 3)从SKPaymentQueue删除它[[SKPaymentQueue defaultQueue] finishTransaction: transaction]; 在第一种情况下,用户可以在购买后closuresnetworking,所以我将无法validation收据。 但是第二步,在步骤1和步骤2之间可能会出现一些互联网问题,所以我不会完成交易,也不会提供内容,这是一个糟糕的用户体验。 那么你为你的应用select了什么方式,为什么? 我的select 我select了第二个场景,因为select第一个场景会让我的应用很容易被iAP Cracker破解。

无法完成付款队列中未完成的交易

我的应用程序在IAP沙盒中进入了一些奇怪的状态…每次启动应用程序时,都会要求input特定testing用户的密码。 我猜是因为未完成的交易。 我真的想完成那笔交易,但这是不可能的。 一些背景信息和我已经做了什么: 我已经从itunesconnect删除了该testing用户 一旦应用程序启动,我调用[[SKPaymentQueue defaultQueue] addTransactionObserver:self] input特定testing用户的密码后,没有收到付款队列更新通知,或点击取消 [SKPaymentQueue defaultQueue].transactions.count始终是0 ,所以我不能手动完成未完成的事务 我已经从设备上删除应用程序,重新启动设备 – 仍然要求input密码 我正在从设置 – > iTunes&App Store注销用户 当我取消对话框要求input密码后,不知何故,我可以用另一个testing用户login,但是下次我仍然得到旧testing用户的密码对话框。 唯一剩下的就是改变捆绑ID,这在我的情况下是不可取的。 希望有人知道如何摆脱未完成的交易的替代方法。

如何使用requestReview(SKStore Review Controller)在随机时间段之后在当前viewController中显示审查popup窗口

我已经阅读了iOS 10.3中提供的这个新function,并认为它将更加灵活和开箱即用。 但是在阅读文档之后,我发现你需要决定显示它的时间以及调用它的viewController。 有没有什么办法让我们可以在任何viewController显示在那一刻随机的一段时间后触发?

在应用程序购买自动更新内容提示用户共享信息

我添加了通过iOS SDK的StoreKit API购买自动更新内容的function。 在我的iOS设备的沙箱中进行testing时,同意购买后在警报中会显示以下消息: 分享您的信息? [app name here]的发布者希望根据他们的隐私政策使用您的姓名,电子邮件和邮政编码。 使用“不允许”和“允许”button 我不想/需要这些信息,也不想通过提示来惹恼我的用户。 但是,我不知道如何禁用此提示收集私人信息。 任何提示都表示赞赏!

StoreKItvalidation错误:21002

在iPhone 4 / iOS 4设备上,沙盒App Store在validation期间报告此错误。 21002:收据数据属性中的数据格式不正确。 在iPhone 5 / iOS 6设备上,相同的代码工作(状态== 0,收据返回)没有任何问题。 我重新启动了设备,确保Apple ID已注销,甚至创build了新的testing用户帐户。 同样的结果。 有任何想法吗?

iOS StoreKit – 何时调用 – (void)restoreCompletedTransactions?

我的应用程序内有大量的1次购买IAP。 用户可以购买他们就好了。 我的问题是,我正在与Flurry进行整合,以跟踪实际购买,而不仅仅是购买的恢复,但是我的SKPaymentTransaction的transactionState总是作为SKPaymentTransactionStatePurchased返回,而不是SKPaymentTransactionStateRestored 。 显然SKPaymentTransactionStateRestored仅在- (void)restoreCompletedTransactions时调用,但是何时调用此方法? 我的思考过程是购买应该是这样的:1)用户select产品,2)询问用户是否想购买X数量的产品。 3)服务器检查用户之前是否购买过,以及是否通过设置SKPaymentTransactionStateRestored恢复它。 否则,处理事务并设置SKPaymentTransactionStatePurchased 。 显然这是错误的,我想调用- (void)restoreCompletedTransactions之间的某处? 谢谢, 将

如何找出当用户第一次购买应用/安装它(可能没有UDID?)

我想知道用户什么时候第一次购买我的应用程序…到目前为止,我还没有find一个干净的方式和一个UDID似乎是唯一的select。 理想情况下,将有一个收据,我可以通过StoreKit获得,但到目前为止 我错过了什么? 有人有想法吗? 情况是,我有一个订阅和第一个问题(从你购买应用程序应该是免费的)。 如果我稍后重新安装,我应该总是得到原来的问题) 例如:我在10.2010购买应用程序我安装并运行它,从10.2010免费获得订阅问题(没有在应用程序内购买)现在我删除了应用程序我安装它1.2013,我只从10.2010免费订阅! 不是新的