所以我设置了一个SKProductsRequest,将它传递给我的产品ID(com.mydomain.Myapp.fullversion)并执行’start’.这不会失败并继续调用productsRequest:dIDReceiveResponse:,其中NSLog显示response.products.count等于零 – 所以问题!
所以,首先是愚蠢的问题.
Q1.在我的测试设备上通过Xcode运行我的应用程序时,测试设备是否需要连接到Internet(例如,无线开启),或者运行Xcode的Mac是否足以连接到Internet? (已回答:您需要在测试设备上建立连接).
问2.如何让这个工作?
我检查了以下所有内容:
您是否为应用程序ID启用了应用内购买?:在应用程序ID下的配置门户中,我启用了“bundle_seed_ID.com.mydomain.Myapp”和“应用程序内购买”.
你有没有为你的产品检查过Cleared for Sale?:在iTunes Connect中我创建了我的应用程序内购买’com.mydomain.Myapp.fullversion’,它已被清除出售.
您的项目的.pList捆绑ID是否与您的App ID匹配?:是的,它设置为’com.mydomain.Myapp’.
您是否为新的App ID生成并安装了新的配置文件?:是的我已经为’com.mydomain.Myapp’创建并安装了PP.
您是否已使用此新配置文件将项目配置为代码签名?:我只在“代码签名身份”(而不是CS权利,CS资源规则路径和其他CS标志)下有条目.它已由自动配置文件选择器设置> IPhone Developer并将自己与Myapp匹配,并设置为DeBUG>任何SDK和版本>任何iOS SDK.
您在制作SKProductRequest时是否使用完整的产品ID?:是的,我正在使用’com.mydomain.Myapp.fullversion’.
自从将产品添加到iTunes Connect后,您有几个小时的时间吗?:是的,我等了24个小时.
您的银行详细信息是否在iTunes Connect上有效?:是的.
您是否尝试从设备中删除应用并重新安装?:很多次.
观察:在测试设备上,我没有登录到iTunes& App Stores’当我在测试设备上从Xcode运行应用程序时,它没有让我登录(我在iTunes Connect中设置了测试用户并准备使用).所以我的应用程序运行,调用从SKProductRequest开始,但从未提示我登录到’iTunes& App Stores’.
提前谢谢了.我希望有人可以帮助我让应用内购买工作.拜伦.
更新1:这里有一些代码虽然我不知道有多少会有所帮助,正如我上面说的那样,它在productsRequest失败了:dIDReceiveResponse:没有返回任何产品.
首先我打电话:
[[MyappIAPHelper sharedInstance] requestProductsWithCompletionHandler:^(BOol success,NSArray *products) { if (success) { NSLog(@"SUCCESS - WE HAVE PRODUCTS"); _products = products; NSLog(@"_products.count = %d",_products.count); } else { if(products == nil) { NSLog(@"Failed - WE HAVE NO PRODUCTS"); } } }];
代码如下:
- (voID)requestProductsWithCompletionHandler:(RequestProductsCompletionHandler)completionHandler{ _completionHandler = [completionHandler copy]; NSLog(@"IAPHelper,requestProductsWithCompletionHandler{},_productIDentifIErs = %@",[_productIDentifIErs anyObject]); _productsRequest = [[SKProductsRequest alloc] initWithProductIDentifIErs:_productIDentifIErs]; _productsRequest.delegate = self; [_productsRequest start];}
‘start’不会失败并继续调用productsRequest:dIDReceiveResponse:
- (voID)productsRequest:(SKProductsRequest *)request dIDReceiveResponse:(SKProductsResponse *)response
{
NSLog(@"Loading List of products...");NSLog(@"iAPHelper,productRequest:dIDRecIEveResponse{},Products count = %d",response.products.count);
一旦你进入这个函数,它就失败了,因为response.products.count等于零.
我刚刚将以下调试代码添加到productRequest:dIDRecIEveResponse {}
for (Nsstring *invalIDProductID in response.invalIDProductIDentifIErs){ NSLog(@"InvalID product ID: %@",invalIDProductID);}
并且它声明’com.mydomain.Myapp.fullversion’无效.
更新2:现在这已经不是一个笑话 – 仍然无法正常工作!
我完全按照http://developer.apple.com/library/ios/#technotes/tn2259/_index.html.我认为问题可能是在创建我的应用内购买时我上传了一个屏幕截图 – 但我通过删除应用内购买进行了纠正,重新创建它以确保它处于’等待屏幕截图’的状态根据文件.我现在已经等了12个多小时才能重新创建应用内购买,以便通过Apple的服务器进行过滤.我从测试设备中删除了该应用.检查我是否在测试设备上退出了商店.重新启动我的测试设备.在Xcode中执行’Clean’并重新启动Xcode.从Xcode跑出应用并猜猜是什么?无效的产品标识!!!!帮助,请任何人,我失去理智!!!!!
解决方法 问题解决了在提出TSI之后,Apple代表终于找到了我的问题.
在iTunes Connect中查看我的应用程序,它声明它的捆绑ID为“Myapp”.供应门户中启用了应用内购买的应用ID是’bundle_seed_ID.com.mydomain.Myapp’.不明显的,或者至少对我来说,这个App ID由一个Bundle ID组成,它必须与iTunes Connect中应用程序的Bundle ID相匹配.
我在Provisioning Portal中创建的第一个App ID是一个通配符.当您完成创建新应用程序的过程时,它希望您输入从下拉列表中选择的Bundle ID,该下拉列表从Provisioning Portal中的App ID填充.如果您选择具有通配符的Bundle ID,则会请求Bundle ID后缀,这是我输入“Myapp”的位置,然后“Myapp”最终成为您的Bundle ID.有点奇怪,因为我认为这只是一个后缀.
后来(几个月后),当我决定实施应用程序内购买时,我会发现通配符App ID不能与推送通知或应用程序内购买一起使用.因此,我会在Provisioning Portal中创建一个新的App ID,按照提示声明“建议的做法是对App ID的Bundle IDentifIEr部分使用反向域名样式字符串” – 因此我输入了’ com.mydomain.Myapp”.我不知道我为App ID创建的Bundle ID必须与之前在iTunes Connect中创建的应用程序的Bundle ID相匹配.
我现在在Provisioning Portal中创建了一个新的应用程序ID“bundle_seed_ID.Myapp”,瞧,我的产品ID’com.mydomain.Myapp.fullversion’不再无效,现在看来它正在运行.
总结以上是内存溢出为你收集整理的ios – 无法让应用内购买工作全部内容,希望文章能够帮你解决ios – 无法让应用内购买工作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)