0.3.15
安卓系统
获取所有产品
在iOS上一切正常,但在Android上getProducts始终返回一个空数组。
我认为这是一个配置问题,但是我遵循了每个步骤...
带有结算权限/已设置商家帐户/在应用内购买创建APK上传的APK ...
这里同样的问题
我的片段:
RNIap.prepare().then(responsePrepare => {
console.log("=============>responsePrepare:" + responsePrepare);
RNIap.getProducts(itemSkus).then(response => {
this.setState({ items : response});
console.log("=============>response:" + JSON.stringify(response));
});
});
我对adb.logcat的回应(Android)
208 28473 28524 I ReactNativeJS:运行带有appParams的应用程序“ testingIap”:{“ rootTag”:11}。 __DEV__ === true,开发级别警告为ON,性能优化为OFF
04-25 17:04:04.228 1140 1150 I AccountManagerService:getTypesVisibleToCaller:isPermitted? 真正
04-25 17:04:04.230 1140 2059 I AccountManagerService:getTypesVisibleToCaller:isPermitted? 真正
04-25 17:04:04.232 24842 24933 I Finsky:[4061] com.google.android.finsky.billing.iab.ab.b(46):com.projectbundle:第一个帐户的帐户-[uuAJBL1tLX2MAj69S-olEslXXXX]
04-25 17:04:04.233 28473 28473 D RNIapModule:计费客户端已准备好
04-25 17:04:04.303 28473 28524 I ReactNativeJS:============== responsePrepare:null
04-25 17:04:04.308 28473 28524 I ReactNativeJS:============== responsePrepare:null
04-25 17:04:04.328 1140 2107我AccountManagerService:getTypesVisibleToCaller:isPermitted? 真正
04-25 17:04:04.330 1140 1896我AccountManagerService:getTypesVisibleToCaller:isPermitted? 真正
04-25 17:04:04.339 1140 2095 I AccountManagerService:getTypesVisibleToCaller:isPermitted? 真正
04-25 17:04:04.340 1140 1679 I AccountManagerService:getTypesVisibleToCaller:isPermitted? 真正
04-25 17:04:04.343 24842 24854 I Finsky:[4020] com.google.android.finsky.billing.iab.ab.b(46):com.projectbundle:第一个帐户的帐户-[uuAJBL1tLX2MAj69S-olEslXXXX]
04-25 17:04:04.347 24842 24853 I Finsky:[4019] com.google.android.finsky.billing.iab.ab.b(46):com.projectbundle:第一个帐户的帐户-[uuAJBL1tLX2MAj69S-olEslXXXX]
04-25 17:04:04.626 28473 28525 D RNIapModule:responseCode:0
04-25 17:04:04.628 28473 28525 D RNIapModule:responseCode:0
04-25 17:04:04.669 28473 28524 I ReactNativeJS:=============>响应:[]
04-25 17:04:04.693 28473 28524 I ReactNativeJS:=============>响应:[]
但是使用iOS,我得到了数据格式良好的数组。
PD1我从https://medium.com/@dooboolab/react -native-in-app-purchase-121622d26b67获得了建议
PD2“请帮助我Obi Wan Kenobi,您是我唯一的希望”
Package.json代码段:
“依赖关系”:{
“ react”:“ 16.3.1”,
“ react-native”:“ 0.55.3”,
“ react-native-iap”:“ ^ 0.3.18”
},
@vadermemo @martinberbesson嗨〜您能以itemSkus
共享您的js代码吗? 您是否按照以下代码进行设置?
export const PURCHASE_ITEMS = Platform.select({
ios: [
'productid_1',
'productid_2',
],
android: [
'productid_1',
'productid_2',
],
});
此外,不再支持草稿应用测试。 请参考指南。 确保将您的应用发布到Alpha或Beta频道。
嗨@dooboolab
这是我的资料
const itemSkus = Platform.select({
ios:[
'com.iap.cart',
'com.iap.doublecoins'
],
安卓: [
'双倍的',
'cart_1500'
],
});
最好的祝福
PD1我的应用程序是alfa版本,甚至没有得到产品。
PD2与其他npm一样,像react-native-billing一样,我可以获得产品:(
@vadermemo这个肥皂泡对我真的很不好。 在我的环境中效果很好。 我将调试更多tommorow,然后一定要返回tommorow! 您还可以尝试捕捉该语句并查看其中出现了什么吗?
我认为我需要发布Alpha版本...上载具有结算权限的apk是不够的
@dooboolab好吧,如果对您有帮助,那么下一步可能是:
当我将配置放在react-native-billing上时,我将资源字符串“ =“ RNB_GOOGLE_PLAY_LICENSE_KEY”放入了资源文件“ string.xml”
但在react-native-iap中,我看不到此参数的作用。
您需要的try-catch引发下一个日志:
const itemSkus = Platform.select({
ios:[
'predictorcart_1500',
],
安卓: [
'predictorcart_1500',
'android.test.purchased',
'android.test.canceled',
“ android.test.refunded”,
'android.test.item_unavailable',
],
});
更改componentDidMount
异步componentDidMount(){
尝试{
等待RNIap.prepare();
等待this.getItems();
}
抓住(错误){
console.warn(err.code,err.message);
}
}
更改获取数据
getProductDetails = async()=> {
尝试{
const products =等待RNIap.getProducts(itemSkus);
console.log('=======> Products ::::',products);
this.setState({productDetails:products});
} catch(err){
console.warn(err.code,err.message);
}
}
放个按钮
\
将应用程式放到装置上
react-native运行android --variant = release
6.最后是下一个日志:
04-26 12:53:11.335 16749 16759 I Finsky:[11707] com.google.android.finsky.billing.iab.ab.b(46):com.projectbundle:第一个帐户的帐户-[uuAJBL1tLX2MAj69S-olEl331212]
04-26 12:53:11.401 226 1177 V audio_hw_primary:do_output_standby输入
04-26 12:53:11.409 20362 20432 D RNIapModule:响应代码:0
04-26 12:53:11.426 226 1177 W音频_硬件_主要:do_output_standby.mode:0
04-26 12:53:11.426 226 1177 V audio_hw_primary:do_output_standby输入输出
04-26 12:53:11.427 1140 2106 D PowerManagerService:releaseWakeLockInternal:lock = 87714678 [AudioMix],标志= 0x0,total_time = 3166ms
04-26 12:53:11.444 20362 20431 I ReactNativeJS:'=======> Products ::::',[{描述:'产品描述:android.test.canceled。',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:title:'Títulode muestra',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:localizedPrice:'$ 18.65',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:类型:'inapp',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:货币:'MXN',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:价格:'18 .65',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:productId:'android.test.canceled'},
04-26 12:53:11.444 20362 20431 I ReactNativeJS:{说明:“产品描述:android.test.item_unavailable。”,
04-26 12:53:11.444 20362 20431 I ReactNativeJS:title:'Títulode muestra',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:localizedPrice:'$ 18.65',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:类型:'inapp',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:货币:'MXN',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:价格:'18 .65',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:productId:'android.test.item_unavailable'},
04-26 12:53:11.444 20362 20431 I ReactNativeJS:{说明:“产品描述:android.test.purchased。”,
04-26 12:53:11.444 20362 20431 I ReactNativeJS:title:'Títulode muestra',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:localizedPrice:'$ 18.65',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:类型:'inapp',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:货币:'MXN',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:价格:'18 .65',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:productId:'android.test.purchased'},
04-26 12:53:11.444 20362 20431 I ReactNativeJS:{说明:“产品描述:android.test.refunded。”,
04-26 12:53:11.444 20362 20431 I ReactNativeJS:title:'Títulode muestra',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:localizedPrice:'$ 18.65',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:类型:'inapp',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:货币:'MXN',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:价格:'18 .65',
04-26 12:53:11.444 20362 20431 I ReactNativeJS:productId:'android.test.refunded'}]
@martinberbesson我有一个Alpha版本的应用程序,即使我无法获得产品也是如此。 我认为是另一回事,也许是react-native-iap或Google控制台中的配置。
@martinberbesson @dooboolab不可思议!
我用相同的步骤制作了另一个应用程序,该应用程序可在iOS和Android上运行!! 我不敢相信。
我不知道是什么原因,但是我认为这是在代码或Google控制台上进行的配置。
PD我等了5个小时才得到正确的itemSkus。
PD2即使24小时,旧应用也无法获得itemsSkus。
PD3 @dooboolab现在您可以安静地睡觉了。 :)
PD4我将制定购买流程,希望这很容易
最好的祝福,
@vadermemo很高兴它正在工作。 另外,对于较新的适用于Android的v3的Iap模块,您无需在string.xml
放入任何其他内容。
Per#124我认为这种情况仍在发生-至少对于现有的应用程序,最好也为此提供解决方案。
对于仍然遇到此问题的任何人,您应该首先阅读https://stackoverflow.com/a/35132936/1374827并确保您满足该帖子中概述的所有要求。
如果一切正常,请检查您是否正在调用适当的函数。 对我来说,我有一个应用程序,当时我只使用订阅应用程序内购买功能,但我误打了RNIap.getProducts
并且当然返回了一个空数组。 我不得不打电话给RNIap.getSubscriptions
,然后返回了订阅。
同样,如果要购买订阅,请确保致电RNIap.buySubscription
如果要购买产品,请致电RNIap.buyProduct
。
我也得到空数组,
而且我对https://developer.android.com/google/play/billing/billing_testing#draft_apps文档感到困惑,我需要测试帐户并添加测试人员,所以请有人可以帮助我。
谢谢!
相同的
@bharatidudhjiya @tmjordan如果你们面临配置问题,我希望您先尝试纯android iap
项目,看看它是否正常工作。 这也将帮助您更好地理解android的iap
sdk。
@hyochan谢谢,这是个好主意。 我去做
@tmjordan这是很老,但是这可能会帮助你的基本设置。
谢谢你@hyochan
我解决了! 我正在使用这些版本,
react-native-iap: ^4.3.0
react-native: 0.60.5
就这样做
const itemSkus = Platform.select({
ios: [
'100coins' // just remove bundle id from product id
],
android: [
'100coins' // just remove bundle id from product id
]
});
确保您具有正确的应用程序包名称。
并且如果您已经从react-native命令更改了它。 它仍然无法正常工作。
您必须手动执行,然后在android文件夹中使用./gradlew clean清理项目。
之后,尝试一下。
编码愉快。
最有用的评论
@vadermemo @martinberbesson嗨〜您能以
itemSkus
共享您的js代码吗? 您是否按照以下代码进行设置?此外,不再支持草稿应用测试。 请参考指南。 确保将您的应用发布到Alpha或Beta频道。