标签: storekit

SKPayementQueue:恢复事务完成而不在调试配置中调用'updatedTransactions'而不调用调试配置

我正在调试恢复事务,在我的调试配置中一切正常:

IE我打电话:

  [[SKPaymentQueue defaultQueue] restoreCompletedTransactions];
Run Code Online (Sandbox Code Playgroud)

以后的queueCalls:

- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
Run Code Online (Sandbox Code Playgroud)

它之后的某个时候它会调用:

- (void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue *)queue {
Run Code Online (Sandbox Code Playgroud)

每个人都很开心

在我的发布配置中,我从未看到对updatedTransactions的调用,因此我从未真正恢复购买.

可能相关,在我尝试恢复后,它不起作用.我重新启动应用程序,当我向商店询问产品列表时,我发现我没有收到回复.

iphone storekit in-app-purchase iphone-sdk-3.0

10
推荐指数
1
解决办法
3295
查看次数

StoreKit:Catch恢复失败?

我正在使用"恢复"按钮实现应用程序内购买功能.

我有一个全新的测试用户设置,没有任何付款.

当我点击恢复按钮,并使用新的测试用户登录时,我无法捕获任何委托方法,告诉我恢复事务已失败(因为没有任何内容可以恢复).

调用的唯一方法是-(void)paymentQueueRestoreCompletedTransactionsFinished:(SKPaymentQueue*)queue,但在恢复成功的情况下调用此方法.

我现在能做什么?我怎么能抓到这样的案子?


另外:我有一个进度指示器,上面写着"联系App Store",我需要一个调用,我可以在失败的情况下隐藏它.

iphone storekit in-app-purchase

10
推荐指数
2
解决办法
2678
查看次数

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

在我遇到问题之前稍微奇怪的设置背景:为客户端开发应用程序,我们使用的是另一个iTunes开发人员帐户,而不是最终发布的用于开发和应用程序的Ad-Hoc版本的应用程序有Game Center和IAP集成.显然,我们最终必须在最终版本帐户上复制我们的设置,但问题似乎是无关的.

问题是尝试在沙箱中测试应用程序内购买.我们在临时账户中没有任何税务/银行信息,它没有以我的名义设置,所以我不能只添加我的.现在,每次我们发送SKProductsRequest和我在临时应用程序帐户的iTunes Connect部分添加的产品的产品标识符时,它都会在响应中作为无效的产品标识符返回.

这个请求在哪里identifiers是一个数组,其中包含我想要获得的字符串产品标识符:

_productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:identifiers]];
_productsRequest.delegate = self;
Run Code Online (Sandbox Code Playgroud)

而这个委托方法:

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
   /*Other code for handling valid responses*/ 

    for (NSString *invalidProductId in response.invalidProductIdentifiers) {
        DLog(@"Invalid product id: %@" , invalidProductId);
    }
}
Run Code Online (Sandbox Code Playgroud)

返回标识符的此日志:

 -[InAppPurchaseManager productsRequest:didReceiveResponse:] Invalid product id: [Product ID That matches the one in ITC exactly]
Run Code Online (Sandbox Code Playgroud)

我知道ITC正在临时帐户中工作,因为我们所有的GameCenter沙箱集成都能正常运行.

其他注意事项:

  • 模拟器和多个设备上的结果相同.
  • 在sim和所有设备上退出正常的iTunes/App商店帐户.
  • 试着等了24个小时再试一次.
  • 试图添加一个不同的产品并尝试其标识符(虽然我没有等待24小时).
  • 看看这个:通过应用内购买解决无效的产品ID问题?不幸的是,并没有看到任何有用的东西.

在这一点上,我很难过.除了让设置此临时帐户的人员添加他们的税/银行信息之外,我还能做些什么才能从SKProductsRequest获得有效的产品?

任何帮助将不胜感激.谢谢!

storekit in-app-purchase ios ios6

10
推荐指数
1
解决办法
7328
查看次数

SKStoreProductViewController和GKHostedAuthenticateViewController没有iPhone横向模式

我正在实施StoreKit应用内应用程序购买界面,虽然看起来SKStoreProductViewControlleriPad上的手柄风景,但我的iPhone上的应用程序似乎没有这样做(它是通用的).

界面SKStoreProductViewController是如此有限,我似乎无法以VC任何方式操纵. 有没有其他人遇到这个?任何解决方法?

当我运行在iPad上运行的代码时,SKStoreProductViewController它从左侧进入,大约一英寸,并在那里挂起直到被解雇.它看起来很实用,但它会让解雇时出现的VC混乱.

这是代码:

// Set up the store vc (creating it if not already done)
if (self.storeVC == nil) self.storeVC = [[SKStoreProductViewController alloc] init];
self.storeVC.delegate = self;
NSDictionary *params = [NSDictionary dictionaryWithObject:appID forKey:SKStoreProductParameterITunesItemIdentifier]; 

// Set up a HUD in case connecting to the store takes a while
[MBProgressHUD showHUDAddedTo:self.view animated:YES]; 

[self.storeVC loadProductWithParameters:params
                        completionBlock:^(BOOL result, NSError *error) {
       [MBProgressHUD hideHUDForView:self.view animated:YES];
       if (result) {
           [self presentViewController:self.storeVC animated:NO completion:^{
           }];
       }
  }]; …
Run Code Online (Sandbox Code Playgroud)

iphone landscape storekit gamekit ios6

10
推荐指数
1
解决办法
3026
查看次数

如何检查沙箱服务器状态?("无法连接到iTunes商店")

我正在使用这个优秀的教程开发应用程序内购买:http: //www.raywenderlich.com/21081/introduction-to-in-app-purchases-in-ios-6-tutorial 我收到错误"无法连接到itunes商店"这似乎与Apple的沙盒服务器关闭有关; 除了谷歌搜索有关沙盒状态的推文外,还有其他方法可以确认其状态,否则很难(阅读ipossible)进行调试.

storekit ios

10
推荐指数
2
解决办法
1万
查看次数

应用内购买需要很长时间才能显示确认警报视图

我遇到了以下问题:当我的应用程序在设备上运行并点击"购买"按钮时,会触发应用程序内购买机制,最多需要十秒钟才能显示标准确认UIAlertView,其中显示:"你想要购买...".我以前从未见过这样的行为.通常它会立即发生.所以首先我认为这可能是由于互联网连接不良或类似的东西,但模拟器使用相同的WiFi网络,它完美地工作,警报视图立即呈现应有的.所以这个问题可能就在其他地方.有没有人解决这个问题?

这是按钮点击:

- (void)buyItemTapped:(id)sender
{
[[InAppPurchaseManager sharedInstance] buy:[NSString stringWithFormat:@"com.mycompany.myapp.unit%d", [sender tag] + 1]];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(transactionFailed)
                                             name:TRANSACTION_FAILED_NOTIFICATION
                                           object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(productPurchased:)
                                             name:PRODUCT_PURCHASED_NOTIFICATION
                                           object:nil];

}
Run Code Online (Sandbox Code Playgroud)

购买方式:

- (void)buy:(NSString *)identifier
{
SKProduct *product = [self.products objectForKey:identifier];

if (product)
   [self purchaseProduct:product];
else
{
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"Error"
                                                     message:@"Invalid Product Identifier"
                                                    delegate:nil
                                           cancelButtonTitle:@"OK"
                                           otherButtonTitles:nil];

    [alert show];

}
}
Run Code Online (Sandbox Code Playgroud)

purchaseProduct方法:

- (void)purchaseProduct:(SKProduct *)product
{
    if ([SKPaymentQueue canMakePayments])
{
    SKPayment *payment = [SKPayment paymentWithProduct:product];
    [[SKPaymentQueue defaultQueue] addPayment:payment];
 }
  else
      NSLog(@"Cannot …
Run Code Online (Sandbox Code Playgroud)

storekit in-app-purchase ios

10
推荐指数
3
解决办法
4472
查看次数

如何在Store Kit应用内购买中测试取消订阅?

Apple 在Sandbox模式下测试订阅购买的文档说:

"要检查购买是否已取消,请在收据中查找取消日期字段.如果该字段中包含日期,则无论订阅的到期日期如何,购买都已取消 - 将取消的收据视为与取消收据相同从来没有购买过."

但收据未显示"取消日期"字段:

"expires_date" = "2015-04-29 16:46:26 Etc/GMT";
"expires_date_ms" = 1430325986000;
"expires_date_pst" = "2015-04-29 09:46:26 America/Los_Angeles";
"is_trial_period" = false;
"original_purchase_date" = "2015-04-29 16:27:40 Etc/GMT";
"original_purchase_date_ms" = 1430324860000;
"original_purchase_date_pst" = "2015-04-29 09:27:40 America/Los_Angeles";
"original_transaction_id" = 1000000153387111;
"product_id" = ...;
"purchase_date" = "2015-04-29 16:31:26 Etc/GMT";
"purchase_date_ms" = 1430325086000;
"purchase_date_pst" = "2015-04-29 09:31:26 America/Los_Angeles";
quantity = 1;
"transaction_id" = ...;
"web_order_line_item_id" = ...;
Run Code Online (Sandbox Code Playgroud)

Apple表示不会管理用户的订阅,而是转而使用iTunes:

"您的应用程序可以打开以下URL,而不是需要编写自己的订阅管理UI代码:https://buy.itunes.apple.com/WebObjects/MZFinance.woa/wa/manageSubscriptions 打开此URL会启动iTunes或iTunes Store,然后显示"管理订阅"页面."

但是这不可能使用Sandbox帐户进行测试(需要信用卡).我真的需要测试取消订阅.

这是我用来获取收据的代码:

NSURL *receiptURL = [[NSBundle …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c storekit in-app-purchase ios

10
推荐指数
1
解决办法
1821
查看次数

使用SKStoreProductViewController或SKStoreReviewController进行应用评级/审核?

SO上有很多文章都SKStoreProductViewController禁用了"编写评论"按钮.然而,所有这些SO文章都已有数年之久,苹果文档中SKStoreProductViewController没有提到这种限制.

在iOS 9.3.2中进行测试时,该按钮未显示为已禁用,但在点击时没有任何操作,这不仅会让开发人员感到困惑,也会让用户感到困惑,这似乎不对.

对iOS 9来说也是如此

  • 将用户"拉近"应用程序评论页面的唯一方法是打开预装了应用程序产品页面的App Store应用程序?
  • 没有让用户离开应用程序就没有办法做到这一点?
  • 没有办法直接将用户引导到评论页面,只能引导到产品页面?

适用于iOS 10.3+的更新

该接受的答案解释之间的差异SKStoreProductViewController,并SKStoreReviewController与应用的评价/审查使用.原始问题是在引入之前编写的SKStoreReviewController.

app-store storekit swift

10
推荐指数
2
解决办法
5488
查看次数

如何将用户与涉及Apple状态通知的自动续订订阅相关联?

如何以允许我知道MY数据库中哪些用户的通知的方式关联自动续订订阅?原始收据中是否存在某种ID,我可以将其存储为用户的字段?

很高兴我知道用户何时取消或续订等,但这对我不确定发生了哪个用户没有帮助.

当您访问文档并向下滚动到状态更新通知时,您会注意到状态通知确实有一个original_transaction_id字段,这是否会持续存在并且可以依赖?

objective-c storekit ios swift

10
推荐指数
1
解决办法
1026
查看次数

iOS应用内购买订阅从SKProduct获得免费试用期

我正在通过订阅进行应用内购买.在swift中,您可以从SKProduct获得价格和价格区域设置,如下所示:

weeklyProduct.price.doubleValue  
weeklyProduct.priceLocale.currencySymbol
Run Code Online (Sandbox Code Playgroud)

其中weeklyProduct是SKProduct.

是否有可能获得免费试用期?例如,我为该产品指定了为期两周的免费试用版.我可以从SKProduct获得这个吗?

storekit in-app-purchase ios skproduct in-app-subscription

10
推荐指数
4
解决办法
4286
查看次数