我正在尝试为MacOS测试应用内购买。输入测试用户凭据后,App Store会抱怨:“当前收据无效或不匹配ds个人ID。”购买失败。
答案 0 :(得分:6)
我尝试解决这个问题的一些事情。
更新:以下是Rainer Brockerhoff对该文章底部的评论。更优雅的解决方案。
我认为不需要所有这些扭曲......
要调试我的收据检查代码,我只需构建,然后显示产品 在Finder中的应用程序。双击它一次,它将退出(173),然后 你会收到收据。
现在回到Xcode并调试检查器。收据将保留 直到你清洁;你可以再做一遍,或复制收据 在其他地方并在建造后把它放回去 - 有一点我收到了收据 由构建脚本重新插入。
如果您要测试已归档的应用,请在中显示该产品 Finder,然后将几个文件夹级别上传到“Release”文件夹,然后 你会看到应用程序 - 你可以从那里双击它。
获得收据的漫长程序:
最后从命令行安装它,如
sudo installer -store -pkg (path to package including filename) -target /
现在应用应该在此路径中包含收据
/Applications/SampleApp.app/Contents/的 _MASReceipt /收据强>
Apple在iTunes Connect中创建测试用户时会发送电子邮件。
电子邮件主题:
请验证Apple ID的联系电子邮件地址
我的邮件最终出现在我的垃圾邮件文件夹中,所以我从未见过它。因此,从未验证过测试用户帐户。
在管理您的应用下的iTunes Connect中 SampleApp > 管理应用内购买
此状态应为:准备提交
如果没有,那么您可能需要上传截图。
答案 1 :(得分:5)
我会回答我自己的问题。我在http://developer.apple.com/videos/wwdc/2011/上观看了名为“iOS和Mac OS X的应用程序内购买”的视频。
关键部分是关于在发布时下载应用收据。包含在App Delegate中的代码类似于:
- (void) applicationWillFinishLaunching:(NSNotification *)notification
{
if(![[NSFileManager defaultManager] fileExistsAtPath:[[[NSBundle mainBundle] appStoreReceiptURL] path]]) {
NSLog(@"to get sandbox receipt, the app must be launched from outside xcode");
//exit(173);
}
}
答案 2 :(得分:4)
为了在Mac OS X中集成应用内购买,我自己也遇到了麻烦。
我google了很多,但解决方案没有任何结果。最后,苹果开发商开始营救。基本上告诉wwdc 2012中的原因,MAC OS X(版本10.7.2)中存在一个错误,因为其中一个错误无法收到收据。
此错误已在最新版本中解决,即MAC OS X(版本10.7.4)
我只是升级了我的操作系统并且能够收到收据。因此,如此问题的朋友“当前收据无效或不匹配的ds人身份”。只需将操作系统升级到10.7.4,apso就会在你的app delegate“applicationDidFinishLaunching”方法中记下以下代码 -
if(![[NSFileManager defaultManager] fileExistsAtPath:[[[NSBundle mainBundle] appStoreReceiptURL] path]]) {
NSLog(@"to get sandbox receipt, the app must be launched from outside xcode");
exit(173);
}
并在XCode之外第一次运行你的代码。然后在收到收件人后,你可以再次从XCode调试。
每次清理构建时,都必须在XCode之外运行你的应用程序。
答案 3 :(得分:3)
您运行的应用程序的收据是否也是您尝试执行应用程序内购买的同一测试用户?
如果您的调试版本在没有正确收据(来自同一测试用户)的情况下运行,我怀疑应用程序内购买是否有效。当您想要测试应用内购买时,请不要使用样本收据,使用来自同一测试用户的真实应用,因为您将购买应用内商品。
我已成功在我自己的Mac App中进行应用程序内购买(虽然它还没有在商店中),所以如果你有更多问题,请开火。