我正在开发一款使用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生成收据检查代码,当我使用它生成的代码时看到相同的结果。
答案 0 :(得分:1)
即使一切似乎都没问题,有时候storeagent
守护进程出错了。这可能会导致:
重新开始的好方法是杀死storeagent
:
打开Activity Monitor应用程序并终止storeagent进程(原始提示来自Apple Developer Forums)。
重试启动您的应用程序。应检索正确的收据。
或者,您可以打开终端窗口并启动命令sudo pkill -f storeagent
打开终端窗口并启动命令sudo pkill -f CommerceKit
答案 1 :(得分:1)
从管理器导出应用时,请选择Export as a Mac Application
而非Export a Developer ID-signed Application
- 为我修复此问题。