使用in-app-purchase时,网络断连恢复后purchaseStream是否持续监听?
in-app-purchase包:网络恢复后purchaseStream的监听状态
purchaseStream是持续订阅的流,只要你没有主动调用cancel()取消订阅,网络断开再恢复后,流会继续保持监听状态,无需重新触发订阅。- 但网络断开期间产生的购买事件不会自动回溯推送,若用户在断网时完成购买(或平台回调因网络延迟未送达),需要在网络恢复后主动调用
restorePurchases()来同步遗漏的购买记录。 - 特殊情况:如果网络断开导致流内部抛出未捕获的错误,流可能会终止监听。这时你需要重新订阅
purchaseStream,并再次调用restorePurchases来恢复功能。
补充优化建议
可以结合网络状态监听,在网络恢复时自动触发同步和订阅恢复,示例代码:
StreamSubscription? _purchaseSubscription; void setupPurchaseListener() { _purchaseSubscription = iap.purchaseStream.listen((purchases) { // 处理购买事件逻辑 }, onError: (error) { // 捕获流错误,标记需要重新订阅 _purchaseSubscription?.cancel(); }); } // 网络恢复时的处理逻辑 void onNetworkConnected() async { await iap.restorePurchases(); // 若之前订阅已终止,重新启动监听 if (_purchaseSubscription?.isPaused ?? true) { setupPurchaseListener(); } }
内容的提问来源于stack exchange,提问作者Kerem C.
相关产品推荐
相关产品推荐

