0

我正在使用ti.storekit在應用程序結算中執行操作。一切似乎工作,但是當我運行下面的代碼:鈦ti.storekit返回空產品

Storekit.requestProducts(["FooPro"], function (evt) 
{ 
    Ti.API.info('evt:' + JSON.stringify(evt, undefined, 2)); 
    //hideLoading(); 
    if (!evt.success) 
    { 
    alert('ERROR: We failed to talk to Apple!'); 
    } 
    else if (evt.invalid) 
    { 
    alert('ERROR: We requested an invalid product!'); 
    } 
    else 
    { 
    item = evt.products; 
    Ti.API.info('gotProducts:' + JSON.stringify(item, undefined, 2)); 
    success(item[0]); 
    } 
}); 

我得到一個成功的響應,但沒有產品:

evt:{ 
    "type": "callback", 
    "products": [ 
    {} 
    ], 
    "source": {}, 
    "success": true 
} 

所以沒有產品,只是默默地失敗。在iTunes連接中,在產品中,我有一個應用產品,產品ID爲FooPro(雖然它正在等待審覈中)。我不知道我做錯了什麼。一切似乎工作,我剛剛回來一個空的產品陣列,我不知道爲什麼。

這也導致了該錯誤,這樣,當我打電話

// product = {} since the above returned it as empty 
Storekit.purchase(product); 

其錯誤,並告訴我這還有:

Passing individual args to `purchase` is DEPRECATED. Call `purchase` passing in a dictionary of arguments. 
addTransactionObserver` should be called before `purchase` 

編輯:產品,採用Ti.API.info時()輸出內容顯示爲空。然而,簽約到iTunes與設備上測試帳戶後,產品仍然顯示爲空的,但是當我做更多的調試,產品對象似乎實際上是:

{'My product description'} 

所以,當我打電話

Storekit.purchase(product) 

好像它真的叫

Storekit.purchase({'My product description'}) 

所以它似乎在這裏失敗,因爲購買通話從未觸發transactionState事件偵聽器。

環境: - iPhone:5,4S

感謝您的幫助。

+0

您的應用狀態爲「等待上傳?」你在真實設備上測試嗎? –

+0

是的,我正在iPhone 5上進行測試。我讀了很多,它往往不適用於模擬器。但是,是的;應用狀態仍在等待上傳。我會嘗試提交它,看看是否有幫助。 – skift

+0

目前一切都在等待審查。我得到了相同的結果。 – skift

回答

1

Whow ......我已經玩了進一步的,而且有一些weired回事...

即使你[{}]產品,products[0].title帶回實際產品稱號。 就好像它在那裏,但隱藏在trace語句中。

所有,那麼你需要做的就是發送{產品:e.products [0]}購買,瞧:

Storekit.requestProducts(productIDs, function(e) { 
    Ti.API.info("GOT PRODUCTS : "+JSON.stringify(e)); 
     // 'GOT PRODUCTS : {"type":"callback","products":[{}],"source":{},"success":true}' 

    Ti.API.info('PROD TITLE : '+e.products[0].title); 
     // 'PROD TITLE : My IAP product' 

    Storekit.purchase({product:e.products[0]}); 
    // You need to implement 'transactionState' and addTransactionObserver to carry on from here - see the example code in the module package for that 
}); 

並確保您設置Storekit.autoFinishTransactions = false; - 否則你不會得到最終的在用戶購買您的產品後購買活動。

+0

這真是太棒了!但由於我不使用這個,我不能輕易測試它。如果其他人可以爲他們確認這個作品,我會將其標記爲現在的答案。 – skift