如何使用Xcode 6.1分发测试版Mac App Store应用程序?

时间:2014-11-21 21:57:37

标签: macos app-store storekit

我正在开发一款使用StoreKit进行应用购买的Mac应用。在启动时,它会检查appStoreReceiptURL是否存在,如果不存在则退出代码173,如Apple的技术说明中所述:

https://developer.apple.com/library/ios/technotes/tn2259/_index.html

我已经使用“导出为Mac应用程序”导出了应用程序,因为我过去曾多次分发给我们的beta测试人员。通常使用代码173退出会导致OS X显示“登录以从App Store下载”对话框;这是最近一次上周末的工作。然而,今天我使用Xcode 6.1导出的应用程序没有这样做。过去,我一直在使用Xcode 5.1进行导出。

还有其他人看到这种行为吗?有什么我应该做的不同,以确保测试人员将看到应用商店登录提示?

编辑:在我正在构建的目标的构建设置中,我选择了Mac Developer代码签名身份和自动配置配置文件。存档过程的日志显示它使用了预期的Mac Developer签名标识。然后在管理器窗口中,我选择“导出为Mac应用程序”将其导出到磁盘,然后通过在Finder窗口中双击它的图标来启动应用程序。这是我双击后在控制台中看到的日志(第一行是应用程序在退出代码173之前输出的日志消息):

2014-11-21 3:58:43.146 PM MyApp[4144]: to get sandbox receipt, the app must be launched from outside xcode
2014-11-21 3:58:43.148 PM com.apple.xpc.launchd[1]: (com.mycompany.MyApp.337424[4144]) Service exited with abnormal code: 173
2014-11-21 3:58:43.151 PM storeassetd[398]: AssetServiceDelegate: Accepting new connection <NSXPCConnection: 0x7f8d61f2f990> connection from pid 378 with interface <AssetServiceInterface: 0x7f8d606f6cf0> (PID 378)
2014-11-21 3:58:43.151 PM storeassetd[398]: addOperation <FetchReceiptOperation: 0x7f8d61f560a0>{name = '(null)'}

我应该补充说我正在Yosemite上测试导出的Mac应用程序。

编辑:我还使用Receigen生成收据检查代码,当我使用它生成的代码时看到相同的结果。

2 个答案:

答案 0 :(得分:1)

即使一切似乎都没问题,有时候storeagent守护进程出错了。这可能会导致:

  • 收据中检索到错误的版本
  • AppStore登录未显示

重新开始的好方法是杀死storeagent

  • 在OS X 10.6到10.9:

打开Activity Monitor应用程序并终止storeagent进程(原始提示来自Apple Developer Forums)。 重试启动您的应用程序。应检索正确的收据。 或者,您可以打开终端窗口并启动命令sudo pkill -f storeagent

  • 在OS X 10.10上:

打开终端窗口并启动命令sudo pkill -f CommerceKit

答案 1 :(得分:1)

从管理器导出应用时,请选择Export as a Mac Application而非Export a Developer ID-signed Application - 为我修复此问题。