应用处于内部测试轨道时内购订阅测试失败(E_ITEM_UNAVAILABLE)的问题咨询
大家好,我在测试React Native应用的订阅内购功能时碰到了E_ITEM_UNAVAILABLE错误,提示“That item is unavailable.”,想请教下有没有朋友遇到过类似情况,或者能帮我排查下哪里配置出问题了?
已完成的配置事项
- 配置了订阅项目:2个产品,每个产品对应2个基础套餐,所有套餐都已设为激活状态
- 添加了许可证测试人员和内部测试轨道的测试人员
- 内部测试轨道的构建版本号和我Android Studio里的一致
- 打了正式签名的Release包,通过adb安装到测试设备上,签名密钥和发布用的是同一个
- 可以通过SKU成功列出所有订阅项目
遇到的错误信息
调用购买接口时收到如下错误:
error { "message": "That item is unavailable.", "debugMessage": "", "code": "E_ITEM_UNAVAILABLE", "responseCode": 4 }
我的简化代码(使用react-native-iap库)
const {subscriptions, currentPurchase, finishTransaction, getSubscriptions, getPurchaseHistory} = useIAP() const subscribe = async (productId: string, offerToken: string) => { console.log('product id', productId, 'offertoken', offerToken) try { await requestSubscription({ sku: productId, ...(offerToken && { subscriptionOffers: [{sku: productId, offerToken}], }), }) } catch (err: any) { console.warn(err.code, err.message) } } useEffect(() => { const subscription = purchaseUpdatedListener((purchase: Purchase) => { console.log('purchase', JSON.stringify(purchase, null, 2)) }) return () => { subscription.remove() } }, []) useEffect(() => { const subscription = purchaseErrorListener((error: PurchaseError) => { console.log('error', JSON.stringify(error, null, 2)) }) return () => { subscription.remove() } }, []) const finish = () => { if (currentPurchase) { finishTransaction({purchase: currentPurchase, isConsumable: false}) } } // 渲染订阅选项的部分 {subscriptions.map((subscription) => subscription.subscriptionOfferDetails.map((offer) => ( <Text key={offer.basePlanId} onPress={() => subscribe(subscription.productId, offer.offerToken)} > {subscription.name} </Text> )), )}
我的疑问
- 是不是必须把应用发布到封闭测试轨道才能正常测试内购订阅?
- 有没有可能我哪里配置漏了或者出错了?
- 有没有相关的排查技巧或者经验可以分享给我?🙏
备注:内容来源于stack exchange,提问作者Babu
相关产品推荐
相关产品推荐

