对于使用非消费类应用内购买的基本应用,有没有人想出使用SKPaymentQueue的最佳做法restoreCompletedTransactions?
我知道建议始终注册一个事务观察器来接收返回到应用程序的待处理事务,但这是一个不同的问题.看起来restoreCompletedTransactions应用程序必须主动决定何时对客户已经进行的所有购买进行轮询.
据我所知,该方法旨在检索可能已丢失的购买.例如,客户可能会以这样的方式安装应用程序或将应用程序移动到新设备,其中应用程序的先前付款的本地记录丢失或重置.
我不清楚的是如何以可靠的方式自动检测这种情况(即如何决定何时轮询丢失的购买).我不想搞砸这一点,并且有可能拒绝客户访问他们已经支付的功能.
与此同时,我不希望restoreCompletedTransactions每次应用程序启动只是为了安全,并且基本上回复了我已经知道的99.9%的交易.(除了应用内购买,我的应用并不需要任何网络连接.)
Apple文档澄清了客户不会再次因他们已经进行的任何非消费性购买而被收费.如果他们尝试重新购买,则仍应将付款交易发送至应用.
最糟糕的情况是,客户可以通过这种方式恢复购买,但我仍然希望避免让他们走上类似于重新购买他们已经支付的东西的道路.
RUN_CLANG_STATIC_ANALYZER("运行静态分析器")项目设置已在我们的项目中发现了重要问题.我们已经解决了这些问题,我们希望防止未来的问题蔓延开来.
我们试图将clang分析警告视为错误以打破我们的构建.到目前为止,尽管已启用-Werror("将警告视为错误"),但仍未成功.
在Xcode中生成以下分析调用:
/ Developer/usr/bin/clang -x objective-c [...] --analyze [...]/TroubledCode.m -o [...]/TroubledTarget.build/StaticAnalyzer/normal/i386/TroubledCode. plist中
生成静态代码分析警告:
[...]/TroubledCode.m:38:34: warning: Potential leak of an object allocated on line 38 and stored into 'leakingManager'
Manager *leakingManager = [[Manager alloc] init];
^
1 warning generated.
Run Code Online (Sandbox Code Playgroud)
但Xcode报告"Build Succeeded ... 1 analyzer results".我们正在寻找的解决方案将使上面的示例生成"构建失败".
我接受了Jim的建议并创建了一个构建脚本.
为了避免误报,我遇到了麻烦,确保它忽略了无关的分析残留物.从Xcode IDE构建和使用构建项目时,此解决方案应该可以正常工作xcodebuild.
要将Xcode 3分析警告转换为构建错误:
该设置也称为LD_GENERATE_MAP_FILE.
复制下面的内容并将其粘贴到"脚本"部分.
error_count=0 …Run Code Online (Sandbox Code Playgroud)