标签: storekit

一个完整的解决方案,可以在iOS 7上验证应用内收据和捆绑收据

我已经阅读了很多文档和代码,理论上这些文档和代码将验证应用内和/或捆绑收据.

鉴于我对SSL,证书,加密等的知识几乎为零,我读过的所有解释,就像这个有前途的解释一样,我发现很难理解.

他们说解释是不完整的,因为每个人都必须弄清楚如何去做,或者黑客可以轻松创建一个能够识别和识别模式并修补应用程序的破解应用程序.好的,我同意这一点.我认为他们可以完全解释如何做,并发出警告说"修改此方法","修改此其他方法","混淆此变量","更改此名称和那个"等.

可以帮助一些好的灵魂来解释如何在iOS 7上进行本地验证,捆绑收据和应用程序内购买收据,因为我已经五岁了(好吧,做到3),从上到下,显然?

谢谢!!!


如果您的应用程序有一个版本,并且您的担心是黑客会看到您是如何做到的,那么只需更改您的敏感方法,然后再发布此处.混淆字符串,改变行的顺序,改变循环的方式(从使用到阻止枚举,反之亦然)等等.显然,每个使用可能在此处发布的代码的人都必须做同样的事情,而不是冒着容易被黑客入侵的风险.

iphone storekit in-app-purchase ios

153
推荐指数
3
解决办法
5万
查看次数

使用StoreKit的未记录的NSURLErrorDomain错误代码(-1001,-1003和-1004)

我正在编写与StoreKit相关的代码,当我尝试将一个购买添加到队列时,我得到一些相当麻烦的错误代码.

到目前为止,我遇到过错误代码-1003和-1004,我在互联网上找不到关于这些代码的任何信息.

运行产品请求会返回有效的产品编号,因此我不知道为什么调用[[SKPaymentQueue defaultQueue] addPayment:aPayment];会因此未记录的问题而失败.

相同的代码也可以在一个设备上没有错误但在另一个设备上没有错误.

到目前为止,我所提出的问题没有答案:

这些代码是什么意思?我该如何缓解这个问题?为什么他们发生购买尝试而不是产品请求?

我已完成的故障排除包括重新生成签名证书和配置文件,更改WiFi网络,清理和构建以及重新安装所有相关软件和组件,这些内容中没有一个单独或一起帮助解决问题.

编辑:

在Apple开发论坛上找到了关于此问题的讨论,但Apple没有人回复:https://devforums.apple.com/thread/107121? tstart = 75(要查看iOS开发人员帐户)

编辑:

今天我被错误代码-1001击中,添加到这个无法解释和间歇性问题的列表中.我仍然没有找到Apple的责任.

编辑:

我怀疑这些错误代码是随机生成的,实际上只表示Sandbox已关闭.其他人遇到这个问题?

storekit ios nsurlerrordomain

102
推荐指数
3
解决办法
13万
查看次数

StoreKit In App购买无效的商品标识码

可能重复:
iPhone StoreKit - 无效的产品ID

我从中得到一个空数组的产品标识符SKProductsRequest.

我做了以下步骤:

  1. 在iTunes Connect中的"管理用户"下创建了一个应用内购买测试用户帐户

  2. 在"管理您的应用内购买"下创建了一些应用内购买产品.

  3. 将应用程序加载到iPhone上,转到设置→存储并退出常规存储

  4. (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response回调中设置断点

所有提交的产品ID都在响应的invalidProductIdentifiers属性中.在提交请求时,我尝试了在步骤2中创建的产品ID以及前缀为Bundle ID的ID.

提前致谢,

Raghu

iphone storekit

83
推荐指数
7
解决办法
5万
查看次数

iPhone商店套件"无法连接到iTunes Store"

我正在努力将应用内购买添加到我的应用中.

我能够收到该productsRequest:didReceiveResponse方法,并收到产品数组.

当我加入我的问题出现SKPaymentSKPaymentQueue.将产品添加到队列后,在该paymentQueue:updatedTransactions方法中,事务始终具有状态SKPaymentTransactionStateFailed.

我NSLog"transaction.error",这就是它返回的内容:Error Domain = SKErrorDomain Code = 0 UserInfo = 0x165000"无法连接到iTunes Store"

我已在设置应用中退出商店,但在尝试在我的应用中购买产品后,它从未要求我使用我的测试帐户登录.它只是因上述错误而失败.

iphone objective-c storekit in-app-purchase

77
推荐指数
7
解决办法
5万
查看次数

何时使用restoreCompletedTransactions进行应用内购买?

对于使用非消费类应用内购买的基本应用,有没有人想出使用SKPaymentQueue的最佳做法restoreCompletedTransactions

意见

我知道建议始终注册一个事务观察器来接收返回到应用程序的待处理事务,但这是一个不同的问题.看起来restoreCompletedTransactions应用程序必须主动决定何时对客户已经进行的所有购买进行轮询.

据我所知,该方法旨在检索可能已丢失的购买.例如,客户可能会以这样的方式安装应用程序或将应用程序移动到新设备,其中应用程序的先前付款的本地记录丢失或重置.

关注

我不清楚的是如何以可靠的方式自动检测这种情况(即如何决定何时轮询丢失的购买).我不想搞砸这一点,并且有可能拒绝客户访问他们已经支付的功能.

与此同时,我不希望restoreCompletedTransactions每次应用程序启动只是为了安全,并且基本上回复了我已经知道的99.9%的交易.(除了应用内购买,我的应用并不需要任何网络连接.)

笔记

Apple文档澄清了客户不会再次因他们已经进行的任何非消费性购买而被收费.如果他们尝试重新购买,则仍应将付款交易发送至应用.

最糟糕的情况是,客户可以通过这种方式恢复购买,但我仍然希望避免让他们走上类似于重新购买他们已经支付的东西的道路.

iphone storekit in-app-purchase ios

46
推荐指数
3
解决办法
2万
查看次数

iPhone应用程序内购买商店套件错误-1003"无法连接到iTunes Store"

我一直致力于添加应用内购买,并能够使用Store Kit创建和测试应用内购买(耶!).在测试期间,我运用我的应用程序导致应用程序在购买过程中崩溃(所以我猜接收paymentQueue的正常循环:updatedTransactions和调用finishTransaction被中断).

现在我无法成功完成任何事务,而是在调用paymentQueue:updatedTransactions时只获得transactionState SKPaymentTransactionStateFailed的事务.

transaction.error.code是-1003,transaction.error.localizedDescription是"无法连接到iTunes Store"!

我尝试从iTunesConnect中删除所有产品,并使用不同的标识符重建它们,但这没有帮助.我也尝试使用App Store应用程序真正连接到真正的App Store并下载一些应用程序,以便我有连接.最后,我访问了"设置:商店"应用,以确保我已退出正常的应用商店帐户.

iphone storekit in-app-purchase ios

45
推荐指数
7
解决办法
5万
查看次数

SKStoreProductViewController 在 iOS 15.6 beta5 中因名为 sceneDisconnected 的无法识别的选择器而崩溃

在 iOS 15.6 beta5 和 iOS 16.0 beta 中:

\n

当发布 UISceneDidDisconnectNotification 时,任何活动的 SKStoreProductViewController 实例都会因名为 sceneDisconnected 的无法识别的选择器而崩溃。

\n

-[SKStoreProductViewController sceneDisconnected:]: 无法识别的选择器发送到实例 0x115161a00

\n

该崩溃仅发生在最新的iOS15.6和iOS16 beta版本中。然而我在任何官方文档中都找不到选择器名称\xe2\x80\xa6\xe2\x80\xa6

\n

有什么解决办法吗?还是我有什么地方没做对?

\n

storekit ios ios16

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

在iOS模拟器上从AppStore注销

自5.0以来,iOS模拟器具有StoreKit支持,因此您可以在没有设备的情况下调试应用内购买.但是,它有一个问题.登录后(进行应用程序内购买)我无法更改AppStore登录.设置没有"AppStore"项,因此我无法从帐户"注销".

我试图从模拟器删除应用程序,重启模拟器,从iTunesConnect删除测试用户 - 没有成功.

屏幕问题

任何的想法?

storekit ios-simulator ios5

43
推荐指数
3
解决办法
9913
查看次数

恼人的"[环境:沙盒]"警报

在测试我们的iOS应用程序的测试版时,我们最近看到的警报只有以下文字"[环境:沙盒]"

我的猜测是,这是应用商店流程中的一个错误,但我不确定.

有人遇到过这个问题吗?你知道为什么吗?

iphone objective-c storekit ipad ios

43
推荐指数
2
解决办法
2万
查看次数

iPhone In App Purchase - response.products仍然是空的?

基本上,我尝试在测试应用程序中设置应用程序购买,然后再将其应用到我公司正在开发的应用程序中.我已经阅读了商店套件pdf和其他片段大约1000次,但产品仍然是空的.这正是我到目前为止所做的:

设置测试应用程序和In App Purchase测试项目
我在iPhone开发人员中心的公司开发人员门户上为"Test App One"创建了一个新的应用程序ID.我确保前缀是com.mycompany.testappone确保可以配置应用内购买.保持应用ID部分,我通过勾选"启用应用内购买"选项配置应用购买.

我在iTunes Connect中创建了"Test App One",并完成了常规程序,但选择了"稍后上传二进制文件"并且没有提交审核,因为该应用程序什么都不做.当然,我们不必提交应用程序来审查这个工作?!然后,我点击管理应用内购买并创建一个新产品ID为"test1"并批准它以便清除销售.

代码
我在XCode中设置了一个新项目TestAppOne,这里是我现在使用的唯一两个类:

TestAppOneAppDelegate.h:

#import <UIKit/UIKit.h>
#import <StoreKit/StoreKit.h>  

@interface TestAppOneAppDelegate : NSObject <UIApplicationDelegate, SKRequestDelegate, SKProductsRequestDelegate> {
    UIWindow *window;
}
Run Code Online (Sandbox Code Playgroud)

TestAppOneDelegate.m:

#import "TestAppOneAppDelegate.h"

static NSString *kMyFeatureIdentifier1 = @"com.mycompany.testappone.test1";

@implementation TestAppOneAppDelegate
@synthesize window;

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
 if([SKPaymentQueue canMakePayments]) {
  NSLog(@"IN-APP:can make payments");
 }
 else {
  NSLog(@"IN-APP:can't make payments");
 }

 [self requestProductData];
 [window makeKeyAndVisible]; 
}

- (void)requestProductData {
 NSLog(@"IN-APP:requestProductData");
 SKProductsRequest *request = [[SKProductsRequest alloc] initWithProductIdentifiers: [NSSet setWithObject:kMyFeatureIdentifier1]];
 request.delegate …
Run Code Online (Sandbox Code Playgroud)

iphone storekit in-app-purchase iphone-sdk-3.0

41
推荐指数
5
解决办法
2万
查看次数