gpt4 book ai didi

ios - 无法进行应用内购买

转载 作者:可可西里 更新时间:2023-11-01 04:31:02 36 4
gpt4 key购买 nike

好吧,我为此扯头发。我正在开发一个免费的应用程序(带有广告和一些锁定功能)。应用内购买将删除广告并提供全部功能。

因此,我设置了一个SKProductsRequest,将其产品ID(com.mydomain.Myapp.fullversion)传递给它,然后执行“开始”。这不会失败,然后继续调用productsRequest:didReceiveResponse :,其中NSLog显示 response.products.count等于零-就是问题!

所以,首先是愚蠢的问题。

Q1。 在测试设备上通过Xcode运行我的应用程序时,测试设备是否需要连接到Internet(例如,无线打开),或者运行Xcode的Mac是否具有Internet连接就足够了? (回答:您需要在测试设备上建立连接)。

问题2:如何使它工作?

我已经检查了以下所有内容:

您是否为应用程序ID启用了应用程序内购买?:在Provisioning Portal中的应用程序ID下,我具有“bundle_seed_id.com.mydomain.Myapp”和“应用程序内购买”已启用。

您是否已检查产品的“允许出售”?:在iTunes Connect中,我已经创建了应用内购买商品“com.mydomain.Myapp.fullversion”,并且已将其出售。

您项目的.plist捆绑包ID是否与您的应用程序ID相匹配?:是的,它设置为'com.mydomain.Myapp'。

您是否已为新的应用程序ID生成并安装了新的配置文件?:是我已经为“com.mydomain.Myapp”创建并安装了PP。

您是否已将项目配置为使用此新的配置文件进行代码签名?:我只有“代码签名身份”下的条目(而不是CS权利,CS资源规则路径和其他CS标志)。它已由“自动配置文件选择器”>“iPhone开发者”设置,并与Myapp匹配,并设置为“调试”>“任何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];

}

“开始”不会失败,并继续调用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中执行“清理”,然后重新启动Xcode。从Xcode运行该应用,然后猜猜是什么?无效的产品标识符!!!! 帮助,请任何人,我迷失了方向!!!!!!

最佳答案

问题已解决

提出TSI后,苹果代表终于发现了我的问题。

在iTunes Connect中查看我的应用程序,它显示其捆绑ID为“Myapp”。而启用了应用程序内购买的供应门户中的应用程序ID为“bundle_seed_id.com.mydomain.Myapp”。至少对我而言,不是显而易见的是,此应用程序ID由捆绑ID组成,该ID必须与iTunes Connect中应用程序的捆绑ID匹配。

我在Provisioning Portal中创建的第一个App ID是通配符。在完成创建新应用程序的过程时,它希望您输入从ID下拉列表中选择的Bundle ID,该下拉列表是从Provisioning Portal中的App ID填充的。如果您选择具有通配符的Bundle ID,则会要求输入Bundle ID后缀,这是我要输入“Myapp”的位置,然后“Myapp”最终成为您的Bundle ID。有点奇怪,我认为这只是一个后缀。

后来(几个月后),当我决定要实现应用内购买时,我发现通配符应用ID不能与推送通知一起使用,也不能用于应用内购买。因此,我将在提示以下提示“建议的做法是为应用程序ID的捆绑标识符部分使用反向域名样式字符串”的提示下在Provisioning Portal中创建一个新的应用程序ID,因此我输入了“com.mydomain.Myapp”。我没有意识到我为App ID创建的Bundle ID必须与之前在iTunes Connect中创建的应用程序的Bundle ID相匹配。

我现在已经在Provisioning Portal和voila中创建了新的应用程序ID“bundle_seed_id.Myapp”,我的产品ID“com.mydomain.Myapp.fullversion”不再无效,并且现在看来可以正常工作。

关于ios - 无法进行应用内购买,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14716561/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com