@ZntxCYL 写道:
Image may be NSFW.
Clik here to view.如果创建的是 “非消耗型” 的商品,苹果会要求程序必须包含 “恢复购买” 的功能Image may be NSFW.
Clik here to view.要不然审核会被拒绝,前几天就因为这个被拒审了Image may be NSFW.
Clik here to view.因为用的是AnySDK接的苹果支付,但是AnySDK只有支付 没有 “恢复购买” 的功能Image may be NSFW.
Clik here to view.所以自己实现了一个:用的是JS调用原生OC实现请求恢复购买,然后取到已经购买的非消耗商品ID,再把商品ID传回JS进行恢复处理Image may be NSFW.
Clik here to view.上代码!!!
这是在JS中开始调用OC的函数
// 恢复购买(调用OC静态函数) restorePurchasesStart: function () { try { // 使用原生去查找已购买的商品,然后再传回JS:第一个参数 IAPHelper 是类名,第二个参数 restorePurchases 是OC的静态函数名 jsb.reflection.callStaticMethod("IAPHelper", "restorePurchases"); } catch (err) { cc.log(err); } }
这是在OC中获得商品ID后调用传回JS的方法
// 恢复购买(OC调用,传回商品ID列表) restorePurchasesEnd: function (ids) { try { let productIds = ids.split(','); productIds.forEach(function(id) { // 在这里进行恢复处理 }, this); } catch (err) { cc.log(err); } }
OC中成功获取到已购买的非消耗商品ID后调用js传回商品ID
// 恢复购买完成 - (void)paymentQueueRestoreCompletedTransactionsFinished: (SKPaymentQueue *) queue { // 将商品ID用逗号分隔连接成字符串 NSString *ids = [productIds componentsJoinedByString:@","]; // 需要调用的JS函数:require('SDKHelpers').restorePurchasesEnd 是引用 SDKHelpers.js 文件里的 restorePurchasesEnd 函数 ('%@') 就是把商品ID当初参数传递过去 NSString *function = [NSString stringWithFormat: @"require('SDKHelpers').restorePurchasesEnd('%@')", ids]; // 转为C风格字符串 const char *stringFunc = [function UTF8String]; // outVal 是js函数的返回值,这里我们可以不管它 jsval *outVal; // OC调用JS,传回商品ID ScriptingCore::getInstance()->evalString(stringFunc, outVal); }
需求用到的朋友稍微修改一下就可以用了,都是基于Cocos Creator的。
Tips:这里只是代码片段,具体代码请点击这里到github下载
帖子: 3
参与者: 2