0

问题: 频繁弹出窗口要求在开发和生产模式(应用商店中的应用的实时版本)上登录iTunes Store。 Popup每次在应用程序启动时都会出现并要求密码频繁访问,每次在应用程序启动时会调用以下代码以检查订阅状态和特定订阅页面。频繁弹出窗口要求以生产模式登录iTunes Store

插件使用:https://github.com/AlexDisler/cordova-plugin-inapppurchase

代码/重现步骤

在调用window.inAppPurchase.getReceipt()以base64字符串返回回执,然后验证收到我打电话getlatestReceiptData()节点服务器上,在沙盒模式下调用'sandbox.itunes.apple.com/verifyReceipt',在生产模式下调用'buy.itunes.apple.com/verifyReceipt',然后比较购买以获得活跃购买。

window.inAppPurchase.getReceipt().then(function (receipt) { 
    getlatestReceiptData(receipt).then(function(latest_purchase){ 
      var timeStamp = Date.now(); 
       if (purchase && purchase.expires_date_ms && purchase.expires_date_ms > timeStamp) { 
          purchased = true; 
       } else{ 
          purchased = false; 
       } 
    });   
}).catch(function (error) { 
    Utils.log(JSON.stringify(error), 'error'); 
    deferred.reject(error); 
}); 

控制台输出

产品类型 - 订阅

系统信息:

科尔多瓦CLI:6.5.0 离子CLI版本:2.2.3 离子应用Lib版本:2.2.1 ios-deploy版本:1.9.0 ios-s IM版本:5.0.12 OS:OS X埃尔卡皮坦 节点版本:7.0.0 的Xcode版本:Xcode的8.1生成版本8B62

回答

0

您使用SKReceiptRefreshRequest任何机会呢?这总是会触发凭证检查。

刷新收据向App Store询问收据的最新副本。刷新收据不会创建任何新的交易。虽然你应该避免连续刷新多次,但这个动作与刷新一次只会产生相同的结果。

恢复购买会提示用户的App Store凭据,这会中断应用程序的流动:因此,不要自动恢复购买,尤其是在每次启动应用程序时都不要自动恢复购买。

https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Chapters/Restoring.html