StackOverflow上有一个很棒的post关于使用收据验证实现应用内购买。但是,出于安全原因,它警告不要使用该代码。许多教程甚至Apple documentation中都有一种情绪。例如,它提到不要这样做:
if (failedValidation) {
exit(173);
}
那很好,但那么你应该怎么做这样的事情呢?在此示例中,将验证收据是有效还是无效,并在无效时退出。
我看到了很多关于做和不做的清单,但没有很多关于做什么的例子或想法。例如,使用opague predicate,但维基百科提到的不是一个具体的例子。
我知道我们不应该都使用相同的代码,但是一些指针(或者对这个主题的思考方式)会很有用。我希望通过这方面的最佳实践,有人能够像我这样的初学者。谢谢!
答案 0 :(得分:2)
如果您正在进行收据验证,那么您可能已经超前了。如果您想为某些样板代码添加不透明谓词,可以执行以下操作:
@property (nonatomic, assign) BOOL opaque;
- (instancetype)init {
...
_opaque = YES;
...
}
- (BOOL)someVerifyMethod {
if (self.opaque) {
...
} else {
// fake block
}
}
老实说,你可以等一下,看看你是否有一个真正的问题才能修复它 - 它是一个成本/收益计算,虽然每个使用相同代码的人理论上都会产生问题,但它并不是明确有利用的风险特别高。
毫无疑问,对此的看法不同,但最终它的商业决策与工程决策一样多。