要跟踪我们的
Windows Phone 8应用程序进行的应用内购买,我们想知道在应用程序内部采购的货币.现在我们使用FormattedPrice属性知道价格,就像这样:
public static async void LoadProductListing() { ListingInformation listings = await CurrentApp.LoadListingInformationAsync(); ProductListing product = listings.ProductListings["SomeProductID"]; String price = product.FormattedPrice; }
这样一来,价格格式只有一个标志,比如€0,99或$0.99.对于€这是很好的,例如. $这是不够的信息:我们还不知道是美元,加拿大元,澳元还是智利比索(哪个标志也是$).我们希望使用适当的ISO 4217货币代码(如EUR,USD,CAD,AUD,CLP)或至少一个解释确切货币的符号(如美元,C $等)的信息.
在Windows 8上,可以使用ListingInformation.CurrentMarket属性获取当前市场的区域设置(因此使用的是货币),但文档中有一个注释:
Windows Phone 8 This API is not implemented and will throw an exception if called.
我们使用系统区域设置侦测不够精确:它可能不同于当前市场使用的区域设置(但是我们可能在那里有错误)!
有没有办法从Windows Phone 8应用程序中正确确定应用内购买货币?
WP8使用您的Live ID支付资料区域选择手机使用的市场,您无法通过手机上的设置进行更改.我只是碰巧知道这一点,因为我的付款资料是以某种方式设置为加拿大(我来自美国),我无法通过手机上的设置进行更改.
然而,回到原来的问题:您的手机将始终通过System.Globalization.RegionInfo.CurrentRegion报告在应用程序购买中使用的文化.因此,您可以从以下位置可靠地获取用于应用程序购买的正确货币代码:
var regionInfo = System.Globalization.RegionInfo.CurrentRegion; var currencyCode = regionInfo.ISOCurrencySymbol;