【Xamarin.Android】应用消费品
如果您正在構(gòu)建一個(gè)需要購買多次內(nèi)容的游戲或應(yīng)用程序,你需要整合應(yīng)用內(nèi)購買消費(fèi)品(IAPS)到您的應(yīng)用程序。在我的前一篇IAP博文中,我教你設(shè)置你的應(yīng)用程序?yàn)镮AP交易基礎(chǔ), 添加IAP項(xiàng)目到谷歌應(yīng)用商店或者iTunes連接,并介紹了Xamarin應(yīng)用收費(fèi)插件,大大簡化了添加IAP應(yīng)用程序的代碼的過程。今天,我們將看一下消耗品,以及它們對(duì)開發(fā)過程的細(xì)微調(diào)整。
可消費(fèi)品的概念是,它們是在應(yīng)用程序生命周期中消耗掉的項(xiàng)目,因此,可多次購買。這些例子都是游戲幣,如上面顯示的猴子信用,額外的健康,并一次性服務(wù),如歌曲。
建立耗材
谷歌不作非消費(fèi)品和消費(fèi)品之間的真正區(qū)別,只有API在它們之間有所不同。對(duì)于iOS,蘋果要求開發(fā)者在iTunes連接中創(chuàng)建IAP時(shí)預(yù)先指定這些信息。
這里的想法是,當(dāng)我們向iTunes服務(wù)器發(fā)出請(qǐng)求時(shí),這個(gè)選擇將在購買過程中觸發(fā)正確的流。
購買和消費(fèi)
對(duì)于iOS和Android,我們要確保我們的應(yīng)用收費(fèi)插件應(yīng)用收費(fèi)插件通過NuGet安裝在我們的解決方案中的所有項(xiàng)目。? iOS和Android各自處理耗材的方式有點(diǎn)不同,我們先從iOS開始,它與我們前面討論過的非消耗品有非常相似的流程。
這個(gè)圖顯示的購買決策的步驟;我們必須:
如果這個(gè)圖看起來很熟悉,那是因?yàn)樗头窍钠返牧鲃?dòng)完全相同。因此,我們要做的就是打電話給PurchaseAsync的方法和我們的消費(fèi)品購買和準(zhǔn)備!由于我們將IAP作為一種消耗品,我們可以不斷地購買該產(chǎn)品。
try {var productId = "mysku";var connected = await CrossInAppBilling.Current.ConnectAsync();if (!connected){//Couldn't connect to billing, could be offline, alert userreturn;}//try to purchase itemvar purchase = await CrossInAppBilling.Current.PurchaseAsync(productId, ItemType.InAppPurchase, "apppayload");if(purchase == null){//Not purchased, alert the user}else{//Purchased, save this informationvar id = purchase.Id;var token = purchase.PurchaseToken;var state = purchase.State;} } catch (Exception ex) {//Something bad has occurred, alert user } finally {//Disconnect, it is okay if we never connectedawait CrossInAppBilling.Current.DisconnectAsync(); }對(duì)于Android,在這個(gè)過程中還有一個(gè)步驟。我們必須首先調(diào)用上面的代碼來實(shí)際購買易耗品,然而,谷歌的消耗品的集成集成了用戶可以購買消費(fèi)品并在將來實(shí)際使用它的場(chǎng)景,例如購買硬幣,但后來在游戲中兌現(xiàn)它們。這意味著我們不能再購買消耗品,直到我們真正確定購買和“消費(fèi)”它。為此,該插件有一個(gè)額外的方法,ConsumePurchaseAsync,以在具體的購買信息。如果調(diào)用此方法在iOS上,它只會(huì)返回null。我們可以使用設(shè)備信息插件,Android上叫ConsumePurchaseAsync來為我們完成購買:
// Called after we have a successful purchase or later on (must call ConnectAsync() ahead of time): if(CrossDeviceInfo.Current.Platform == Platform.Android) {var consumedItem = await CrossInAppBilling.Current.ConsumePurchaseAsync(purchase.ProductId, purchase.PurchaseToken);if(consumedItem != null){// Item has been consumed} }了解更多
還有很多更多的IAPs,包括訂閱和產(chǎn)品信息,這些信息暴露在應(yīng)用程序插件插件中。你可以在GitHub項(xiàng)目找到更多關(guān)于這個(gè)README文件中的信息。同樣的文檔還可以幫助你了解應(yīng)用程序集成的完整設(shè)置、測(cè)試和故障排除指南。另外,我強(qiáng)烈推薦閱讀完整的文檔在iOS 和Android應(yīng)用內(nèi)購買。
總結(jié)
以上是生活随笔為你收集整理的【Xamarin.Android】应用消费品的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 沉默已久的华为突然宣告杀入无人驾驶领域,
- 下一篇: ionic - error