0

我正在努力寻找任何拥有示例项目的人,我可以从中遵循所有说明。我对苹果方面的流程感到非常沮丧。我想我已经正确设置了所有内容,但是该应用程序无法识别我提供给它的产品 ID。

我正在使用Telerik(以前的 icenium),使用 jQueryMobile 1.3.1、Cordova 3.2.0 和PhoneGap InAppPurchase iOS 插件

我创建了一个公共 bitbucket 存储库,以便您可以在此处查看所有代码。

A. 苹果面

  1. 在 iTunesConnect 我的应用程序详细信息是: 在此处输入图像描述 并且处于等待上传状态

  2. 我的 InAppPurchases 部分看起来像这样: 在此处输入图像描述 我听说可能没有找到产品的原因是因为它们前面没有 sku。所以为了安全起见,我有一些带有它的产品和其他没有它的产品。问题在这里

  3. 我已经创建了一个沙盒 iTunes 帐户,以准备测试购买。(并不是说它达到了我可以测试的程度)


B. Telerik 方面

  1. 我基本上按照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. 设备端

  1. 我已经在我的 ipad 上退出了 iTunes。
  2. 如您所见,每个项目都作为无效返回。在此处输入图像描述

D. 其他

我已经看到,也许我需要在提交产品后等待 24 小时才能让它们工作:这里。但是,此问题与生产就绪应用程序有关,而不是在测试期间。这第二个链接表明它可能只是等待更长时间的情况。

有没有人遇到过这个问题?我究竟做错了什么?

4

1 回答 1

1

所以看起来这只是等待产品传播到所有 Apple 服务器的情况。今天再次检查,结果如下:

在此处输入图像描述

于 2014-04-29T02:15:39.670 回答