我正在努力寻找任何拥有示例项目的人,我可以从中遵循所有说明。我对苹果方面的流程感到非常沮丧。我想我已经正确设置了所有内容,但是该应用程序无法识别我提供给它的产品 ID。
我正在使用Telerik(以前的 icenium),使用 jQueryMobile 1.3.1、Cordova 3.2.0 和PhoneGap InAppPurchase iOS 插件
我创建了一个公共 bitbucket 存储库,以便您可以在此处查看所有代码。
A. 苹果面
在 iTunesConnect 我的应用程序详细信息是: 并且处于等待上传状态
我的 InAppPurchases 部分看起来像这样: 我听说可能没有找到产品的原因是因为它们前面没有 sku。所以为了安全起见,我有一些带有它的产品和其他没有它的产品。问题在这里。
我已经创建了一个沙盒 iTunes 帐户,以准备测试购买。(并不是说它达到了我可以测试的程度)
B. Telerik 方面
- 我基本上按照iOS 上 PhoneGap In-App Purchase 的 3 步教程进行了一些小改动,以便该
initialize
功能在deviceready
. 我删除了未达到的代码,因为所有产品都返回无效,代码如下所示:
索引.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>Hello, World</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="jquery-mobile/styles/jquery.mobile-1.3.1.min.css" rel="stylesheet" />
<link href="styles/main.css" rel="stylesheet" />
<script src="cordova.js" type="text/javascript"></script>
<script src="jquery-mobile/js/jquery-1.9.1.min.js" type="text/javascript"></script>
<script src="jquery-mobile/js/jquery.mobile-1.3.1.min.js" type="text/javascript"></script>
</head>
<body>
<!--Home-->
<div id="home" data-role="page">
</div>
<script type="text/javascript">
document.addEventListener('deviceready', function () {
navigator.splashscreen.hide();
IAP.initialize();
}, false);
</script>
<script src="scripts/login.js" type="text/javascript"></script>
</body>
</html>
登录.js
var IAP = {
list: [ 'dummyinapp11', 'dummyinapp12', 'com.gaandder.inapptutorial.dummyinapp11', 'com.gaandder.inapptutorial.dummyinapp12', 'com.gaandder.inapptutorial.dummyinapp1', 'com.gaandder.inapptutorial.dummyinapp2', 'dummyinapp1', 'dummyinapp2' ],
products: {}
};
IAP.initialize = function () {
// Check availability of the storekit plugin
if (!window.storekit) {
logg('In-App Purchases not available');
return;
}
// Initialize
storekit.init({
ready: IAP.onReady,
purchase: IAP.onPurchase,
restore: IAP.onRestore,
error: IAP.onError
});
};
IAP.onReady = function () {
// Once setup is done, load all product data.
storekit.load(IAP.list, function (products, invalidIds) {
logg('IAPs loading done:');
for (var j = 0; j < products.length; ++j) {
var p = products[j];
logg('Loaded IAP(' + j + '). title:' + p.title +
' description:' + p.description +
' price:' + p.price +
' id:' + p.id);
IAP.products[p.id] = p;
}
IAP.loaded = true;
for (var i = 0; i < invalidIds.length; ++i) {
logg('Error: could not load ' + invalidIds[i]);
}
});
};
logg = function (data) {
document.getElementById('home').innerHTML += data + '<br />';
// console.log(data);
};
如您所见,我已经添加了我能想到的所有产品 ID 排列,请参阅 A.2。推理
C. 设备端
- 我已经在我的 ipad 上退出了 iTunes。
- 如您所见,每个项目都作为无效返回。
D. 其他
我已经看到,也许我需要在提交产品后等待 24 小时才能让它们工作:这里。但是,此问题与生产就绪应用程序有关,而不是在测试期间。这第二个链接表明它可能只是等待更长时间的情况。
有没有人遇到过这个问题?我究竟做错了什么?