天天看點

Windows Phone中Wallet錢包的使用

前言

     Windows Phone 8中加入了錢包Wallet這個功能,這個功能非常的有意思,開發者可以通過Wallet提供的API建立擷取Wallet中的商品。統一管理使用者的收集優惠券、信用卡、成員資格、會員卡和一些自定義的資訊。甚至可以将自己開發的應用內建到系統的Wallet中,不僅友善了使用者的管理,還可以讓使用者直接從Wallet中得到關聯的應用。這個關聯的功能非常适合一些筆記類、旅行類、金融管理類的應用,比如,印象筆記、有道筆記、挖寶和攜程、藝龍。

Deals、Membership和Transactions

   在使用Wallet的API之前,你必須要開啟應用的Wallet能力,在WMAppManifest.xml中勾選ID_CAP_WALLET,如下圖。

Windows Phone中Wallet錢包的使用

    Deals是一種常用的Wallet類型,你可以了解為是一個優惠劵的集合,你可以在你的應用内建立優惠劵資訊并将其添加到系統的Wallet中,并提供了更新、删除的功能。

      上面我們就建立了一個deal并通過SaveAsync方法将其儲存到了Wallet中。deal的Logo有三種格式,分别對應不同分辨率的手機。CustomProperties是一個字典類,來儲存自定義的資訊。

       GetItemsAsync方法傳回的是一個WallteItemCollection的集合,這個集合是包括我們應用内建立愛你的WalletItem,不包括其他入口建立的WalletItem,是以你隻能對自己應用内建立的Item做修改。你可以使用Linq來擷取單個的元素,使用Wallet的Remove方法從Wallet中删除deal。

       Wallet也可以用來支付,通過OnlinePaymentInstrument,PaymentInstrument,WalletTransactionItem可以實作不同需求,下面我們主要講的還是最後一種WalletItem,前兩種需要你的開發者賬号到MarketPlace注冊。下面我們來建立一個會員卡的WalletItem。

      WalletTransactionItem需要通過AddWalletItemTask添加到Wallet中,這時我們在Wallet中就可以看到我們剛剛建立的會員卡了。通常我們還要特别記錄會員卡的使用情況,這個記錄也可以記錄在Wallet中,通過WalletTransactionItem的<code>TransactionHistory</code>屬性向Wallet中添加使用記錄。

WalletAgent

    上面的例子都是我們在自己建立的App内操作Wallet中的資料,試想如果我們在網站上貼出了一個優惠劵,通過自己的App将這個優惠劵添加到了Wallet中,如果這個優惠劵過期了我們能否在不打開原應用的情況下直接在Wallet中重新整理優惠劵呢?答案是可以的,這就需要我們在應用内添加一個WalletAgent,如果之前沒有使用過BackgroundAgent,那麼最好先自行Google一下BackgroundAgent的原理。

      繼承自WalletAgent的代理類隻需要重寫OnRefreshData就可以對Wallet中的優惠劵做出相應的操作,args.Items代表可以更新的優惠劵的項。使用者通過點選相應優惠劵下的重新整理按鈕處罰OnRefreshData事件,我們可以通過一個WebService擷取網絡上有關優惠劵最新的資訊,然後更新Wallet。

将應用內建到Wallet中

    為了讓使用者在Wallet的其他選項中發現你的應用,你需要将你的應用添加為Wallet的擴充。這樣當使用者點選“添加”時,會使您的應用出現在 Wallet 的“其他”應用清單中。随後,使用者可以從該清單中挑選您的應用,該應用将在手機上下載下傳并安裝。若要出現在 Wallet 的“其他”清單中,請注冊為一項 Wallet 擴充。擴充在您的應用項目的 WMAppManifest.xml 檔案中指定。以下是 WMAppManifest.xml 檔案的一個示例,其中包含用于将應用注冊為 Wallet 擴充的 Extension 元素。

     在以上代碼中,通過在 WMAppManifest.xml 檔案中将一個 Extension 元素添加至 Extensions擴充。

     ExtensionName: 定義所注冊擴充的類型。注冊為 Wallet 擴充時,此屬性的有效值為:

Wallet_app_other – 用于非特定 Wallet 項目

Wallet_app_loyalty – 用于信用卡

Wallet_app_membership – 用于會員卡

Wallet_app_transit – 用于儲值卡

Wallet_app_payment – 用于支付卡

     即使你的應用将用于多種 Wallet 項目類型也隻需要注冊一次,。可以按需要注冊為多種 Wallet 項目類型的擴充,方法是在 WMAppManifest.xml 檔案中将多個 Extension 元素添加到 Extensions 中。目前,當使用者在Wallet中點選“其他”以顯示“添加到 Wallet”對話框并查找 Wallet 擴充時,将傳回所有擴充,無論注冊為哪種 Wallet 項目類型。

ConsumerID: 這是一個固定值,在手機上設定為 Wallet 應用的 id,即 {5B04B775-356B-4AA0-AAF8-6491FFEA5683}。

TaskID: 将此設定為 default。

繼續閱讀