Ionic Vue集成Glassfy后iOS内购无响应问题排查
Ionic Vue中Glassfy购买无响应问题排查
问题背景
在Ionic Vue应用中使用Glassfy实现内购与订阅功能,已成功从Apple Store Connect获取商品并展示,但调用购买函数时无任何反应,也未返回错误信息。已在iPhone真机、TestFlight测试,且Xcode中已添加In-app Purchase功能权限。
相关代码
const sub = ref(); onMounted(async () => { initGlassfy(); }); const initGlassfy = async () => { try { await Glassfy.initialize({ apiKey: "4ba35c9a634d44158ee6713cfffd83ce", watcherMode: false, }); getSku(); } catch (error) { console.log(error); } }; const getSku = async () => { try { subOne.value = await Glassfy.skuWithId({ identifier: "30Days" }); } catch (e) { console.log(e); } }; const purchase = async () => { try { await Glassfy.purchaseSku({ sku: sub.value }); } catch (error) { console.log(error); } };
排查与解决方案
变量名不匹配:代码中获取商品后赋值给
subOne.value,但购买时传入的是sub.value,导致sku参数为undefined,Glassfy无法触发购买流程。将getSku中的subOne.value改为sub.value,或者购买函数中改用subOne.value。异步流程未等待:
initGlassfy中调用getSku时未加await,可能导致用户触发购买时商品信息还未加载完成,sub.value仍为undefined。修改为await getSku();,确保商品信息加载完成后再允许购买操作。添加购买状态回调:Glassfy部分错误可能不会通过
try/catch抛出,需添加回调监听购买状态:// 在Glassfy初始化成功后添加 Glassfy.setPurchaseCallback((result) => { if (result.success) { console.log("购买成功", result.transaction); } else { console.log("购买失败/取消", result.error); } });验证沙盒测试账号:确保使用有效的Apple沙盒测试账号,测试前需退出设备上的个人App Store账号,避免冲突。
核对SKU标识符:确认Apple Store Connect中内购商品的ID与代码中
"30Days"完全一致,大小写、拼写均不能出错。
内容的提问来源于stack exchange,提问作者Frederik
相关产品推荐
相关产品推荐

