2.3.0
安卓
let sub = await RNIApp.buySubscription("some");
应该等待用户在应用内支付模式上按下购买
我无法检查用户是否接受订阅,因为在执行以下操作时:
let sub = await RNIApp.buySubscription("some");
如果(子){
做一些事情..
}
if(sub) 块在弹出窗口打开后立即执行,但用户仍然不接受订阅
真机
有任何想法吗?
还有其他方法,如 getAvailablePurchases 也返回一个承诺并且工作正常
问题是 buySubscription 应该返回用户输入的回调,而不是
我使用的是 RN 57,订阅也完成了,我可以在 Playstore 上检查购买是否正常,但是 buySubscription 承诺返回未定义
有什么帮助吗?
好吧,我降级到 2.2.2 并且可以工作.. 所以我想你们错过了新版本中的一些东西
@marcosmartinez7抱歉2.3.1
吗?
你好谢谢!
我现在没有时间,但我会的
@marcosmartinez7谢谢,请回来。
@doobolab问题也存在于 iOS 上。 尝试了2.3.1
和2.3.2
。 正如@marcosmartinez7所提到的2.2.2
工作正常
我认为它在2.3.3
是固定的。 当这种情况仍然发生时,请重新打开。
@dooboolab对不起,刚刚安装并重新链接2.3.5
。 await RNIap.buySubscription(iapProductId)
undefined
在 iOS 上仍然立即返回
@Gaia-Nutrition 我认为您的问题有所不同,因为ios
代码没有改变。 您可以尝试取消链接并重新链接吗?
@doobolab我尝试链接和取消链接。 每当我切换回2.2.2
它就会重新开始工作。 但我明天再检查一下。 也许我会尝试手动安装本机组件
@dooboolab好的,我现在手动链接新的2.3.6
版本。 仍然得到undefined
。 我很乐意帮助解决这个问题。 让我知道我能做些什么来帮忙!
有人可以证实这一点吗? 这不应该发生,尤其是在 ios 中。
@doobolab我可以确认在 iOS 版本 2.3.6 上不执行承诺,但版本 2.2.2 可以(使用 iPhone 5 设备,React Native 0.56)
我也在 2.3.7 上遇到了这个问题。 当我尝试使用await
,立即调用下一行而不是等待承诺,当我使用RNIap.buySubscription(subId).then(purchase => {})
它崩溃并出现错误无法读取未定义的属性
我们目前正在处理这个问题。 另外,任何面临这个问题的人,在实际拨打buySubscription
之前,您是否拨打过getSubscriptions
buySubscription
?
我刚刚在 RNExample 应用程序中测试了购买。 我使用 buyProductWithoutFinishTransaction() 方法购买了订阅。
我建议像 RNExample 一样进行测试。 并更新 Xcode,将构建设置设置为“旧版”.. 我猜 Xcode 中的构建过程更改了此更新。
并使用新制作的沙盒测试仪。
@JJMoon非常有趣。 buyProductWithoutFinishTransaction()
和finishTransaction()
适用于2.3.7
而buySubscription()
直接仍然失败!
@Gaia-Nutrition 好的。 然后使用buyProductWithoutFinishTransaction
和finishTransaction
而不是buySubscription
。 购买行为完全相同。
@Gaia-Nutrition 你能试试2.3.8
吗? 另外,你有没有在buySubscription
之前打电话给getSubscriptions
buySubscription
?
@dooboolab 2.3.8
使用buySubscription
2.3.8
仍然失败,并且再次失败:是的,我之前确实调用过getSubscriptions
。 我不认为buyProductWithoutFinishTransaction()
会起作用。
我在 iOS 设备中以沙盒模式测试了 buySubscription。
它成功了,但它显示了一些错误消息。
并且自动续订订阅不发出收据。
我建议使用buyProductWithoutFinishTransaction 和finishTransaction 而不是buySubscription。
目前我没有用于测试的设备,我稍后会跟踪这个问题。
感觉这只是目前在iOS
。 我对吗?
@doobolab不,也发生在 Android 上。 该函数甚至在调用 buyItemByType 中的第一行之前就返回 undefined 。
@doobolab问题是在 index.js:105 中引起的。 您应该将行更改为类似
export const buySubscription = (sku, oldSku, prorationMode) => Platform.select({
ios: () => RNIapIos.buyProduct(sku),
android: () => RNIapModule.buyItemByType(ANDROID_ITEM_TYPE_SUBSCRIPTION, sku, oldSku, -1),
})();
(我知道这忽略了 prorationMode)
但是订阅成功后出现了一个问题:
E/UncaughtException: java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.Object java.util.List.get(int)' on a null object reference
at com.dooboolab.RNIap.RNIapModule$11.onPurchasesUpdated(RNIapModule.java:427)
at com.android.billingclient.api.BillingClientImpl$1.onReceive(BillingClientImpl.java:136)
at com.android.billingclient.api.LocalBroadcastManager.executePendingBroadcasts(LocalBroadcastManager.java:303)
at com.android.billingclient.api.LocalBroadcastManager.access$000(LocalBroadcastManager.java:44)
at com.android.billingclient.api.LocalBroadcastManager$1.handleMessage(LocalBroadcastManager.java:114)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6938)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
@mfentross你在哪个版本的react-native-iap
? RNIapModule.java:427
有空行。 请重试最近的一次。
我的错:我编辑了几行。 但主要问题的解决方法是将buySubscription 函数编辑为
`
export const buySubscription = (sku, oldSku, prorationMode) =>
平台选择({
ios: () => RNIapIos.buyProduct(sku),
机器人:()=> {
if (!prorationMode) prorationMode = -1;
return RNIapModule.buyItemByType(ANDROID_ITEM_TYPE_SUBSCRIPTION, sku, oldSku, prorationMode);
},
})();
`
有一些不必要的括号。
@mfentross我不好。 我错过了return
声明。 我刚刚发布到2.3.11
。 那么现在安卓能用了吗?
@doobolab谢谢,现在可以用了👍
@mfentross @JJMoon好的! 所以我们只剩下 iOS 问题了。
@JJMoon他说如果用async
和await
包装方法,它就可以工作。 但是,我不太确定这怎么可能。 用async
和await
包装在返回值上是多余的,不是吗?
我已经发布到2.3.13
。 希望大家试试这个。
当这种情况仍然发生时,请重新打开。 谢谢大家的帮助。
最有用的评论
我们目前正在处理这个问题。 另外,任何面临这个问题的人,在实际拨打
buySubscription
之前,您是否拨打过getSubscriptions
buySubscription
?