Я изо всех сил пытаюсь найти любого, у кого есть пример проекта, из которого я могу следовать всем инструкциям. И я серьезно разочарован процессами на стороне Apple. Я думаю, что у меня все настроено правильно, но приложение не распознает идентификатор продукта, который я ему предоставляю.
Я использую Telerik (ранее Icenium), используя jQueryMobile 1.3.1, Cordova 3.2.0 и Плагин PhoneGap InAppPurchase iOS
Я создал общедоступный репозиторий Bitbucket, чтобы вы могли видеть весь код здесь.
А. Сторона яблока
В iTunesConnect сведения о моем приложении: и находится в состоянии Ожидание загрузки сильный>
Мой раздел InAppPurchases выглядит следующим образом: я слышал, что, возможно, причина, по которой продукты не были найдены, была потому что у них не было sku перед ними. поэтому у меня есть некоторые продукты с ним и другие без него, просто на всякий случай. Проблема здесь а>.
Я создал учетную запись iTunes для песочницы, чтобы иметь возможность тестировать покупки. (не то, чтобы он достиг точки, которую я еще могу проверить)
Б. Сторона телерика
- Я в основном следовал Три шага по покупке внутри приложения 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. для рассуждений
С. Сторона устройства
- Я вышел из iTunes на своем iPad.
- Как видите, каждый элемент возвращается как недопустимый.
Д. Другое
Я видел, что, возможно, мне нужно подождать 24 часа после отправки продуктов, чтобы они заработали: здесь. Однако эта проблема была связана с готовым к производству приложением, а не во время тестирования. Эта вторая ссылка предполагает, что это снова может быть случай ждать дольше.
Кто-нибудь сталкивался с этой проблемой раньше? Что я делаю неправильно?