(困扰俩天的一个socket问题终于被自己解决了,就发篇博文吧)
在有些应用中我们可能希望展示用户的手机型号,比如诺基亚930,830,630,1520等等.我们首先可以通过API获取手机的SystemProductName:
Windows.Security.ExchangeActiveSyncProvisioning.EasClientDeviceInformation deviceInfo = new Windows.Security.ExchangeActiveSyncProvisioning.EasClientDeviceInformation(); var firmwareVersion = deviceInfo.SystemFirmwareVersion; string d = "{\"devicename\":\"" + deviceInfo.SystemProductName + "\",\"deviceManufacturer\":\"" + deviceInfo.SystemManufacturer + ";"+deviceInfo.FriendlyName + ";" + deviceInfo.SystemFirmwareVersion + ";" + deviceInfo.SystemHardwareVersion + ";" + deviceInfo.SystemSku + ";" ; return d;
其输出如下:
{"devicename":"RM-978_1007","deviceManufacturer":"NOKIA;WP 8.1 KKS;01061.00066.14235.36002;3.0.4.;NOKIA RM-978_1007;
为了实验,我输出多个属性.但我们可能用到的应该只有SystemProductName 属性.但大家会发现,我的手机630显示的手机名称是RM-978_1007.所以我们还需要在转化一步:
转化的文档:https://github.com/ailon/PhoneNameResolver/blob/master/PhoneNameResolver.cs
// Lumia 505 { "LUMIA 505", new CanonicalPhoneName() { CanonicalModel = "Lumia 505" } }, // Lumia 510 { "LUMIA 510", new CanonicalPhoneName() { CanonicalModel = "Lumia 510" } }, { "NOKIA 510", new CanonicalPhoneName() { CanonicalModel = "Lumia 510" } }, // Lumia 610 { "LUMIA 610", new CanonicalPhoneName() { CanonicalModel = "Lumia 610" } }, { "LUMIA 610 NFC", new CanonicalPhoneName() { CanonicalModel = "Lumia 610", Comments = "NFC" } }, { "NOKIA 610", new CanonicalPhoneName() { CanonicalModel = "Lumia 610" } }, { "NOKIA 610C", new CanonicalPhoneName() { CanonicalModel = "Lumia 610" } }, // Lumia 620 { "LUMIA 620", new CanonicalPhoneName() { CanonicalModel = "Lumia 620" } }, { "RM-846", new CanonicalPhoneName() { CanonicalModel = "Lumia 620" } }, // Lumia 710 { "LUMIA 710", new CanonicalPhoneName() { CanonicalModel = "Lumia 710" } }, { "NOKIA 710", new CanonicalPhoneName() { CanonicalModel = "Lumia 710" } }, // Lumia 800 { "LUMIA 800", new CanonicalPhoneName() { CanonicalModel = "Lumia 800" } }, { "LUMIA 800C", new CanonicalPhoneName() { CanonicalModel = "Lumia 800" } }, { "NOKIA 800", new CanonicalPhoneName() { CanonicalModel = "Lumia 800" } }, { "NOKIA 800C", new CanonicalPhoneName() { CanonicalModel = "Lumia 800", Comments = "China" } }, // Lumia 810 { "RM-878", new CanonicalPhoneName() { CanonicalModel = "Lumia 810" } }, // Lumia 820 { "RM-824", new CanonicalPhoneName() { CanonicalModel = "Lumia 820" } }, { "RM-825", new CanonicalPhoneName() { CanonicalModel = "Lumia 820" } }, { "RM-826", new CanonicalPhoneName() { CanonicalModel = "Lumia 820" } }, // Lumia 822 { "RM-845", new CanonicalPhoneName() { CanonicalModel = "Lumia 822", Comments = "Verizon" } }, // Lumia 900 { "LUMIA 900", new CanonicalPhoneName() { CanonicalModel = "Lumia 900" } }, { "NOKIA 900", new CanonicalPhoneName() { CanonicalModel = "Lumia 900" } }, // Lumia 920 { "RM-820", new CanonicalPhoneName() { CanonicalModel = "Lumia 920" } }, { "RM-821", new CanonicalPhoneName() { CanonicalModel = "Lumia 920" } }, { "RM-822", new CanonicalPhoneName() { CanonicalModel = "Lumia 920" } }, { "RM-867", new CanonicalPhoneName() { CanonicalModel = "Lumia 920", Comments = "920T" } }, { "NOKIA 920", new CanonicalPhoneName() { CanonicalModel = "Lumia 920" } }, { "LUMIA 920", new CanonicalPhoneName() { CanonicalModel = "Lumia 920" } }, // Lumia 520 { "RM-914", new CanonicalPhoneName() { CanonicalModel = "Lumia 520" } }, { "RM-915", new CanonicalPhoneName() { CanonicalModel = "Lumia 520" } }, { "RM-913", new CanonicalPhoneName() { CanonicalModel = "Lumia 520", Comments="520T" } }, // Lumia 521? { "RM-917", new CanonicalPhoneName() { CanonicalModel = "Lumia 521", Comments="T-Mobile 520" } }, // Lumia 720 { "RM-885", new CanonicalPhoneName() { CanonicalModel = "Lumia 720" } }, { "RM-887", new CanonicalPhoneName() { CanonicalModel = "Lumia 720", Comments="China 720T" } }, // Lumia 928 { "RM-860", new CanonicalPhoneName() { CanonicalModel = "Lumia 928" } }, // Lumia 925 { "RM-892", new CanonicalPhoneName() { CanonicalModel = "Lumia 925" } }, { "RM-893", new CanonicalPhoneName() { CanonicalModel = "Lumia 925" } }, { "RM-910", new CanonicalPhoneName() { CanonicalModel = "Lumia 925" } }, { "RM-955", new CanonicalPhoneName() { CanonicalModel = "Lumia 925", Comments="China 925T" } }, // Lumia 1020 { "RM-875", new CanonicalPhoneName() { CanonicalModel = "Lumia 1020" } }, { "RM-876", new CanonicalPhoneName() { CanonicalModel = "Lumia 1020" } }, { "RM-877", new CanonicalPhoneName() { CanonicalModel = "Lumia 1020" } }, // Lumia 625 { "RM-941", new CanonicalPhoneName() { CanonicalModel = "Lumia 625" } }, { "RM-942", new CanonicalPhoneName() { CanonicalModel = "Lumia 625" } }, { "RM-943", new CanonicalPhoneName() { CanonicalModel = "Lumia 625" } }, // Lumia 1520 { "RM-937", new CanonicalPhoneName() { CanonicalModel = "Lumia 1520" } }, { "RM-938", new CanonicalPhoneName() { CanonicalModel = "Lumia 1520", Comments="AT&T;" } }, { "RM-939", new CanonicalPhoneName() { CanonicalModel = "Lumia 1520" } }, { "RM-940", new CanonicalPhoneName() { CanonicalModel = "Lumia 1520", Comments="AT&T;" } }, // Lumia 525 { "RM-998", new CanonicalPhoneName() { CanonicalModel = "Lumia 525" } }, // Lumia 1320 { "RM-994", new CanonicalPhoneName() { CanonicalModel = "Lumia 1320" } }, { "RM-995", new CanonicalPhoneName() { CanonicalModel = "Lumia 1320" } }, { "RM-996", new CanonicalPhoneName() { CanonicalModel = "Lumia 1320" } }, // Lumia Icon { "RM-927", new CanonicalPhoneName() { CanonicalModel = "Lumia Icon", Comments="Verizon" } }, // Lumia 630 { "RM-976", new CanonicalPhoneName() { CanonicalModel = "Lumia 630" } }, { "RM-977", new CanonicalPhoneName() { CanonicalModel = "Lumia 630" } }, { "RM-978", new CanonicalPhoneName() { CanonicalModel = "Lumia 630" } }, { "RM-979", new CanonicalPhoneName() { CanonicalModel = "Lumia 630" } }, // Lumia 635 { "RM-974", new CanonicalPhoneName() { CanonicalModel = "Lumia 635" } }, { "RM-975", new CanonicalPhoneName() { CanonicalModel = "Lumia 635" } }, // Lumia 526 { "RM-997", new CanonicalPhoneName() { CanonicalModel = "Lumia 526", Comments="China Mobile" } }, // Lumia 930 { "RM-1045", new CanonicalPhoneName() { CanonicalModel = "Lumia 930" } }, // Lumia 636 { "RM-1027", new CanonicalPhoneName() { CanonicalModel = "Lumia 636", Comments="China" } }, // Lumia 638 { "RM-1010", new CanonicalPhoneName() { CanonicalModel = "Lumia 638", Comments="China" } }, // Lumia 530 { "RM-1017", new CanonicalPhoneName() { CanonicalModel = "Lumia 530", Comments="Single SIM" } }, { "RM-1018", new CanonicalPhoneName() { CanonicalModel = "Lumia 530", Comments="Single SIM" } }, { "RM-1019", new CanonicalPhoneName() { CanonicalModel = "Lumia 530", Comments="Dual SIM" } }, { "RM-1020", new CanonicalPhoneName() { CanonicalModel = "Lumia 530", Comments="Dual SIM"
大家可以根据这个文档进行转化.
获取手机ID在社交应用中比较常用,比如可以禁止同一手机注册俩个ID等等.
HardwareToken token = HardwareIdentification.GetPackageSpecificToken(null); IBuffer hardwareId = token.Id; HashAlgorithmProvider hasher = HashAlgorithmProvider.OpenAlgorithm("MD5"); IBuffer hashed = hasher.HashData(hardwareId); string hashedString = CryptographicBuffer.EncodeToHexString(hashed); return hashedString;