InAppPurchasing с использованием Cordova Phonegap Telerik/Icenium возвращает неверный идентификатор продукта

Я изо всех сил пытаюсь найти любого, у кого есть пример проекта, из которого я могу следовать всем инструкциям. И я серьезно разочарован процессами на стороне Apple. Я думаю, что у меня все настроено правильно, но приложение не распознает идентификатор продукта, который я ему предоставляю.

Я использую Telerik (ранее Icenium), используя jQueryMobile 1.3.1, Cordova 3.2.0 и Плагин PhoneGap InAppPurchase iOS

Я создал общедоступный репозиторий Bitbucket, чтобы вы могли видеть весь код здесь.

А. Сторона яблока

  1. В iTunesConnect сведения о моем приложении: введите описание изображения здесьи находится в состоянии Ожидание загрузки

  2. Мой раздел InAppPurchases выглядит следующим образом: введите здесь описание изображенияя слышал, что, возможно, причина, по которой продукты не были найдены, была потому что у них не было sku перед ними. поэтому у меня есть некоторые продукты с ним и другие без него, просто на всякий случай. Проблема здесь.

  3. Я создал учетную запись iTunes для песочницы, чтобы иметь возможность тестировать покупки. (не то, чтобы он достиг точки, которую я еще могу проверить)


Б. Сторона телерика

  1. Я в основном следовал Три шага по покупке внутри приложения PhoneGap на iOS с небольшими изменениями, чтобы функция initialize работала на deviceready. Я удалил код, который не был достигнут, так как все продукты возвращаются недействительными, код выглядит так:

index.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);
    };

Как видите, я добавил все возможные варианты идентификаторов продуктов, см. A.2. для рассуждений


С. Сторона устройства

  1. Я вышел из iTunes на своем iPad.
  2. Как видите, каждый элемент возвращается как недопустимый. введите здесь описание изображения

Д. Другое

Я видел, что, возможно, мне нужно подождать 24 часа после отправки продуктов, чтобы они заработали: здесь. Однако эта проблема была связана с готовым к производству приложением, а не во время тестирования. Эта вторая ссылка предполагает, что это снова может быть случай ждать дольше.

Кто-нибудь сталкивался с этой проблемой раньше? Что я делаю неправильно?


person haxxxton    schedule 27.04.2014    source источник
comment
Вы подписали контракт разработчика с Apple, чтобы разрешить IAP?   -  person Chris Prince    schedule 28.04.2014
comment
да, я сделал это, когда настраивал идентификатор приложения.   -  person haxxxton    schedule 29.04.2014


Ответы (1)


Так что, похоже, это был просто случай ожидания распространения продуктов на все серверы Apple. Сегодня при повторной проверке вот такой результат:

введите здесь описание изображения

person haxxxton    schedule 29.04.2014