标签: storekit

iPhone Store Kit返回无效的产品ID错误

我正在尝试在我的iPhone上测试In App Purchases并遇到一个问题,我在那里请求信息,最终作为"didRecieveResponse"方法中的无效产品ID返回给我.

我有:

  • 创建了与此应用相关联的商店内商品.它的捆绑ID与其他所有内容相匹配.它已被清除出售并得到开发商的批准.
  • 确保我的新配置文件已启用商店应用程序购买,并且它具有完整的应用程序名称:"com.domain.appname"
  • 确保这是用于将应用程序签名到我的iPhone的配置文件.
  • 确保"com.domain.appname"是用于构建配置文件的应用程序ID.
  • 确保在我的plist文件中使用"com.domain.appname"作为包标识符.

一切似乎都已到位,但我仍然将我的产品作为无效ID返回给我.

这是我正在使用的代码:


- (void)requestProductData {
   SKProductRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject: @"com.domain.appname.productid"]];
   request.delegate = self;
   [request start];
}

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
   NSArray *myProducts = response.products;
   NSArray *myInvalidProducts = response.invalidProductIdentifiers;

   for(int i = 1; i < myInvalidProducts.count; ++i)
   {
      std::cout <<"invalid product id = " << [[myInvalidProducts objectAtIndex:i] UTF8String] << std::endl;
   }

   for(int i = 0; i  < myProducts.count; ++i)
   {
      SKProduct * myProduct = [myProducts objectAtIndex:i]; …
Run Code Online (Sandbox Code Playgroud)

iphone storekit in-app-purchase

4
推荐指数
1
解决办法
1万
查看次数

iphone:应用内购买错误

我正在开发一个应用程序并在其中使用应用程序内购买.我在iTunes Connect中创建了应用内商品.直到昨天一切正常.但今天.它开始给出这个错误.

"错误:付款请求仅限于通过Store Kit的didRecieveResponse方法返回的有效产品."

我不知道是什么问题.请回复

iphone objective-c storekit in-app-purchase

4
推荐指数
1
解决办法
4920
查看次数

在StoreKit /应用程序内购买中区分初始购买和免费"重新购买"

来自StoreKit指南:

如果用户尝试购买他们已购买的非消费产品或可续订订购,则您的应用程序将收到该项目的常规交易,而不是恢复交易.但是,不会再向该用户收取该产品的费用.您的应用程序应将这些事务视为与原始事务的事务相同.

这在我正在开发的应用程序中提出了一个巨大的问题.我们已通过应用内购买向发布商许可了大量内容.他们要求我们每次出售这些内容(即用户向我们支付)时,我们的服务器会在其服务器上调用API来报告交易.这是出于会计目的,并且最终用于根据我们与他们的协议确定我们在月底支付的金额.

我已经在SO和其他地方阅读了几个关于调用restoreCompletedTransactions的建议,并且在设备上保持了用户已经购买的内容的本地理解,因此不允许他们再次购买它.这对我来说似乎应该能够在服务器端实现.但是,正如StoreKit指南所承诺的那样,我们从Apple服务器返回的收据与购买和重新购买的收据完全相同.

如果来自StoreKit的付款回调在这种情况下无法被信任为有效的会计机制("你得到了报酬"而不是"你没有得到报酬"),那么还有什么其他实时的交易流量见解?如果我们告诉他们我们必须在月底之后等待45天才能从iTunes Connect中获得真正支付的美元金额,我认为我们正在合作的出版商会很高兴.

storekit in-app-purchase ios

4
推荐指数
1
解决办法
3145
查看次数

有关应用内购买的问题:自动续订订阅

这是我的情况:我有一个免费的应用程序,我计划通过每月0.99美元(自动续订)订阅提供访问权限.

我仍然在沙箱中进行测试,因此我看到自动更新订阅如何真正起作用的方式可能会被扭曲.我的问题如下:

1)支持自动续订订阅的iOS的最低版本是多少?早期iOS版本的用户将如何体验所述功能?

2)如果我理解正确,可自动更新的订阅被归类为"非消费品",只能购买一次.当我尝试在到期日之前重新购买订阅时(或续订被设置为启动的日期)会发生什么:我不会再收费,是吗?

3)如果订阅自动续订,我的应用会收到通知吗?我想这个应用程序将自动发送到我的SKPaymentTransactionObserver中的paymentQueue:updatedTransactions:方法调用,但我在沙盒中工作时从未能看到这种情况.在我的情况下,我必须在启动期间针对购买收据的到期日期运行本地时间戳检查.

4)如果我必须与iTunes服务器通信,使用我从初次购买(或连续续订)保存的收据,如果订阅仍处于活动状态或用户已禁用自动,我如何正确检查iTunes?续期?

5)我的应用程序内购买项目是订阅本身,其产品代码为应用程序所知...当您已经知道它是什么时,是否真的有必要检索产品详细信息?Apple的IAP指南似乎很清楚我需要这样做,但这对我来说似乎只是开销.

iphone storekit in-app-purchase ios

4
推荐指数
1
解决办法
4029
查看次数

我可以在iPhone/iPad应用程序中使用PayPal吗?

我正在开发一个应用程序,我希望通过它来销售一些活动门票.

我是否可以将PayPal用于此目的,并且Apple将使用其他StoreKit Framework批准该应用程序.

我搜索了这个主题,但我找不到任何可能的解决方案.

一些搜索说可以使用paypal,另一个搜索表示Apple从未批准使用除inAppPurchase之外的支付网关的应用程序.

请帮我!

iphone objective-c storekit in-app-purchase

4
推荐指数
2
解决办法
6494
查看次数

应用程序内购买错误代码0

我正在尝试解决为什么我得到"无法连接到iTunes Store",错误代码为0.

我知道我的应用程序标识符很好,因为我检索应用程序启动时的产品信息并记录结果,我从iTunes获得正确的产品标识符和价格.当我将我的应用标识符更改为愚蠢的东西时,这会失败.

由于上述原因,我知道我的产品标识符也没问题(否则我将无法正常工作).

我尝试通过两种不同的方式创建SKPayment来解雇购买:

第一种方式

SKPayment *payment = [SKPayment paymentWithProductIdentifier:productIdentifier]; // This is deprecated in ios 5 but should work
[[SKPaymentQueue defaultQueue] addPayment:payment];
Run Code Online (Sandbox Code Playgroud)

第二种方式

SKPayment *payment = [SKPayment paymentWithProduct:foundProduct];
[[SKPaymentQueue defaultQueue] addPayment:payment];
Run Code Online (Sandbox Code Playgroud)

(foundProduct来自SKProductsRequest返回的SKProducts数组)

两种方式都失败,错误代码为0.

我已经在运行iOS 5.0.1的iPhone 4S和iOS 5上的模拟器中尝试了这两种方法.

我已经读过硬重置工作(2359739)似乎很疯狂,但我继续在模拟器(iOS模拟器=>重置内容和设置...)中尝试它无济于事.

我唯一能想到的是,iTunes沙盒服务器可能很糟糕......

objective-c storekit in-app-purchase ios

4
推荐指数
2
解决办法
4746
查看次数

paymentQueue:updatedTransactions什么时候不应该被调用?

我在应用内购买时遇到了一个奇怪的问题......

在我请求产品信息后,有时会因某种原因自动调用paymentQueue:updatedTransactions.

在我的商店的viewDidLoad方法中,我初始化并启动请求:

- (void)viewDidLoad
{
    [super viewDidLoad];

    productsArray = [[NSArray alloc] init];

    [[SKPaymentQueue defaultQueue] addTransactionObserver:self];

    NSSet *productIdentifiers = [NSSet setWithObjects:PRODUCT_ID, nil];
    productsRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:productIdentifiers];
    productsRequest.delegate = self;
    [productsRequest start];
}
Run Code Online (Sandbox Code Playgroud)

然后我收到回复:

- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
    productsArray = [[NSArray alloc] initWithArray:response.products];

    NSLog(@"Products Count: %d",[productsArray count]);
    NSLog(@"Invalid Products Count: %d",[response.invalidProductIdentifiers count]);

    if ([productsArray count] > 0)
    {
        NSLog(@"Product title: %@" ,[productsArray objectAtIndex:0]);
        [self hideLoadingView];


    } else {
        UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:@"No products found"
                                                            message:@"There might …
Run Code Online (Sandbox Code Playgroud)

iphone storekit in-app-purchase xcode4.2

4
推荐指数
1
解决办法
5779
查看次数

在App Purchase Restore Query中

嘿StackOverflow ......

我的iOS应用程序允许用户购买视频作为非消耗性iAP,所有视频都非常重,每个大约300mb/650mb ...

Apple要求您使用StoreKit在应用中实施还原购买功能.这对我来说很好,但是,如果用户购买了几个不同的视频,那么尺寸可能真的开始加起来....我已经考虑过在这之前检查用户是否在wifi上,但是说实话,感觉就像一个解决方法而不是解决方案.我宁愿抓住用户下载的所有内容的数组,让/他们/决定他们现在要下载哪些内容.这是允许的,甚至是可能的吗?

谢谢

奥利

cocoa-touch objective-c storekit in-app-purchase ios

4
推荐指数
1
解决办法
295
查看次数

如何使用tvOS beta 2进行应用购买?

我正在开发一个tvOS应用程序,该应用程序链接(使用相同的应用程序ID)到iOS应用程序,其中应用程序购买功能完全正常,我使用与iOS应用程序相同的实现.

我正在使用开发苹果电视,而不仅仅是模拟器.

Apple TV无法识别我的沙箱测试程序帐户,我的productsRequest没有得到任何答案.

在tvOS上有StoreKit特有的东西吗?谢谢

storekit in-app-purchase tvos

4
推荐指数
1
解决办法
1013
查看次数

ios订阅不会在沙箱中自动续订

我在我的应用程序中实现了自动续订。根据文档,此功能应每隔几分钟自动更新,每天最多更新六次。但是对于我的应用程序来说,这没有发生。

我在应用收据中寻找订阅的到期日期,这在第一次即可使用,但此后将无法使用。应用收据是否在沙盒环境中不会自动更新?我的理解是应该的。

storekit in-app-purchase ios swift

4
推荐指数
2
解决办法
664
查看次数