在其他 Mac 上的沙盒中测试 Mac Appstore 的 IAP

Posted

技术标签:

【中文标题】在其他 Mac 上的沙盒中测试 Mac Appstore 的 IAP【英文标题】:Test IAP for Mac Appstore in sandbox on other Mac 【发布时间】:2014-04-03 17:26:02 【问题描述】:

我正在将 IAP 添加到我在 Mac App Store 上分发的 Mac 应用程序中。它似乎在我的 Mac 内部/外部 XCode 上本地运行良好,但由于某种原因,它不适用于具有不同行为(SIGKILL 或不下载 App Store 收据)的其他 Mac 计算机。

这是我用来确保 App Store 收据存在或正确下载的代码:

void EnsureAppstoreReceipt()

  // TODO: Note: In OS X, if the appStoreReceiptURL method is not available (on older systems), you can fall back to a hardcoded path.
  // The receipt’s path would be /Contents/_MASReceipt/receipt inside the app bundle.
  NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
  NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];
  if(!receipt)
  
    // Validation fails
    qDebug() << "No AppStore receipt found. Exiting with 173 to force OSX to generate one in " << QString::fromNSString(receiptURL.absoluteString);
    exit(173);
  

我在 XCode 中Archive 应用程序,然后选择Distribute,然后选择Application。如果我选择Don't resign,那么即使在我的电脑上,它也不会下载 App Store 收据。但是,如果我选择“Mac Appstore Distribution”身份或“Mac Development”配置文件,那么它会在我的开发 Mac 上正确加载收据,但在其他计算机上不起作用。它启动应用程序并始终以代码 173 退出,仅此而已。

是否可以在尚未构建应用程序的 Mac 上的沙盒中测试 IAP?如果是这样,我在这里错过了什么?

【问题讨论】:

【参考方案1】:

根据this one 等一些教程,我终于找到了一种方法。我必须创建一个新的配置文件来部署到其他 Mac,对于这个配置文件,我必须添加每台 Mac 机器,我想在其上使用 Certificates, Identifiers & Profiles 上的“添加设备”来测试我的应用程序。

然后我不得不在Preferences => Account 中刷新XCode 中的签名身份列表,并有权访问新的配置文件。然后我ArchiveDistribute 我的构建和导出为Application,我使用给定的配置文件签名,然后应用程序在其他 Mac 计算机上使用 AppStore 的沙盒正确启动。

【讨论】:

以上是关于在其他 Mac 上的沙盒中测试 Mac Appstore 的 IAP的主要内容,如果未能解决你的问题,请参考以下文章

Oracle PBCS - Sandbox

在 PayPal 沙盒中使用 IPN 测试拒付/争议

有没有办法让我的沙盒 Mac 应用程序只读访问 ~/Library 中的文件?

我在使用 paypal checkout-sdk 的沙盒中找不到交易历史记录

Mac Sandbox:测试文件是不是可访问

iBooks 能够读取其他应用程序沙盒中的文件