最近,游戏SDK要集成iap内购,那好吧,功能实现了。没想到研发接入测试的时候反馈,苹果iap内购弹窗太慢,用户可以多次点击不同的选项。。。哎,也是,苹果服务器在美国呢,从调起支付到弹出支付界面要3秒左右,用户以为没反应,多点几次也是有的嘛(虽然不会重复支付,但是体验不好啊,对于我来说绝对不能忍)。那么怎么办呢?加遮盖?肯定是第一个想法,但是我不想这么做(就是这么任性!)好了,方法就是忽略点击事件:
这个代理里面写,前提是你的类有添加监听:
记得移除监听:
只要在交易成功、交易失败、交易延迟、已购买过的、default分支里加上 恢复响应点击事件代码即可。(商品添加进列表一支就不用加了)。
[[UIApplication sharedApplication] beginIgnoringInteractionEvents];
在调起支付时,让它忽略点击事件,不管苹果响应的有多慢,就是不让你点击,就是这么强势!
然后再苹果的代理方法里面加上恢复响应点击事件:
[[UIApplication sharedApplication] endIgnoringInteractionEvents];
具体是在:
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray<SKPaymentTransaction *> *)transactions {}
这个代理里面写,前提是你的类有添加监听:
[[SKPaymentQueue defaultQueue] addTransactionObserver:self];
记得移除监听:
[[SKPaymentQueue defaultQueue] removeTransactionObserver:self];
只要在交易成功、交易失败、交易延迟、已购买过的、default分支里加上 恢复响应点击事件代码即可。(商品添加进列表一支就不用加了)。
效果还不错!妈妈再也不用担心我的点击了。