专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > WinRT Metro

小娜跟踪快递

发布时间:2011-06-23 13:55:09 文章来源:www.iduyao.cn 采编人员:星星草
小娜追踪快递

小娜作为我们的全能秘书,能够帮我们设置提醒、推荐新闻、查询天气、聊天讲段子,现在还能帮助我们追踪快递,大家可以移步微软小娜懒癌支持中心阅读相关软文,不想移步的朋友也可以通过下面的动图来了解一下效果,看一下Win10上的网购剁手之旅是如何的更加舒适省心。

(以此动图来向热心博主疯狂的懒羊羊表示感谢,该博主向我们推荐了ScreenToGif,使我们的博客更生动)

 

如何在我们的应用/网站中集成“小娜追踪快递”功能呢?

这和把大象装在冰箱一样简单,只需要三步:1)打开IDE,加载工程;2)加入包含ms-cortana://InterestTracking Deep-link的HyperLink或者Button控件;3)编译部署,把IDE关上。

没学会?!好吧,我们还是更详细的讲一下。第一步和第三步就不说了,主要说一下第二步。

首先我们来看一下小娜Deep-link的格式,如下图:

参数部分是URL编码过的Json串,该Json对象是一个数组,数组中的元素包含以下属性:

属性名 注释 类型 
 type  目前该属性值固定为package  string
 CarrierName   快递公司名称  string
 TrackingNumber   快递单号  string

 

 

 

 

可以使用如下代码得到Deep-link字符串:

public class MailPackage
{
    public string type { get; set; }
    public string TrackingNumber { get; set; }
    public string CarrierName { get; set; }
}

public string GenerateCortanaDeepLink(string carrierName, string trackingNumber)
{
    if (string.IsNullOrWhiteSpace(carrierName)
        || string.IsNullOrWhiteSpace(trackingNumber))
    {
        return null;
    }

    // JSON对象
    IList<MailPackage> mailPackages = new List<MailPackage>();
    MailPackage mailPackage = new MailPackage
    {
        type = "package",
        TrackingNumber = trackingNumber,
        CarrierName = carrierName
    };
    mailPackages.Add(mailPackage);

    // 序列化
    var serializer = new DataContractJsonSerializer(typeof(List<MailPackage>));
    var stream = new MemoryStream();
    serializer.WriteObject(stream, mailPackages);
    byte[] dataBytes = new byte[stream.Length];
    stream.Position = 0;
    stream.Read(dataBytes, 0, (int)stream.Length);
    string dataString = Encoding.UTF8.GetString(dataBytes);

    // Url encode
    string encodeData = System.Net.WebUtility.UrlEncode(dataString);

    // DeepLink
    string url = string.Format("ms-cortana://InterestTracking?parameter={0}", encodeData);

    return url;
}

有了Deep-link后,我们有多种方式来使用

在网页中,将Deep-link作为一个超链接来使用就可以

<a href="ms-cortana://InterestTracking?parameter={URL encoded package info JSON string}">Tell Cortana</a>

在UWP应用中,如果你使用的是HyperlinkButton,在XAML中你可以这样用

<HyperlinkButton NavigateUri="ms-cortana://InterestTracking?parameter={URL encoded package info JSON string}" />

如果你使用其它控件,你可以在其点击事件处理中加入如下代码

Windows.System.Launcher.LaunchUriAsync("ms-cortana://InterestTracking?parameter={URL encoded package info JSON string}");

 

另外需要提到一点,使用Deep-link的方式来让小娜追踪快递,是在14332之后的预览版才有的功能。淘宝、旺信在发布时考虑到有的用户没有升级预览版,但也有的用户可以提前尝鲜新功能并给我们反馈改进意见,所以在代码中加入了对系统版本的判断,只有系统达到一定版本才能看到追踪快递这个按钮。下面提供两个关于版本号处理的函数,供大家参考。

一个是将当前系统版本号取出并转为字符串:

public static string GetOperatingSystemVersion()
{
    string sv = AnalyticsInfo.VersionInfo.DeviceFamilyVersion;
    ulong v = ulong.Parse(sv);
    ulong v1 = (v & 0xFFFF000000000000L) >> 48;
    ulong v2 = (v & 0x0000FFFF00000000L) >> 32;
    ulong v3 = (v & 0x00000000FFFF0000L) >> 16;
    ulong v4 = v & 0x000000000000FFFFL;
    string version = $"{v1}.{v2}.{v3}.{v4}";

    return version;
}

另一个是输入一个版本号,得到对应的ulong值,方便与系统版本号AnalyticsInfo.VersionInfo.DeviceFamilyVersion比较大小:

public static ulong GenerateUlongFromVersion(ushort Major, ushort Minor, ushort Build, ushort Revision)
{
    return ((ulong)Major << 48)
        + ((ulong)Minor << 32)
        + ((ulong)Build << 16)
        + ((ulong)Revision);
}

 

是不是很简单啊,有没有很想体验一下啊,快来加入Windows预览体验吧,然后自己动手试一试!示例代码可点此下载。

当然,小娜的这个功能还没有正式Release,可能会存在一些Bug。比如我们在内部试用时就发现不同数据源过来的快递公司名称不一致,有的是圆通快递,有的却是圆通速递。针对此,小娜团队积极应对,对能收集到的快递公司名作了对应的映射关系,使得常见的快递公司的不同叫法都可以匹配到正确的记录。

如果各位博主在使用中发现任何问题,欢迎积极的给我们留言。另外,如果你对这个功能有任何好的建议或期望,也请告诉我们,万一哪天实现了呢。

5楼楚人游子
楼主开发UWP应用辛苦了~
4楼jesse hao
【淘宝UWP问题反馈】,win10PC预览版14367,淘宝UWP版本磁贴中的【淘】被压扁了,如下图,我没有登录淘宝,安装完只是打开了一次就关了,,,
Re: MS-UAP
@jesse hao,谢谢反馈。,我们将在下个版本中修复这个问题。
3楼h82258652
话说哪里可以查小娜的接口?像博主这种ms-cortana://InterestTracking,都不知道哪里可以查找到。
Re: MS-UAP
@h82258652,引用话说哪里可以查小娜的接口?像博主这种ms-cortana://InterestTracking,都不知道哪里可以查找到。,抱歉,目前还没有提供官方文档。这也是我们写这篇博客的动机,为了告诉大家怎么集成让小娜追踪快递的功能。
2楼edielei
小娜要是开放接口,我们搞C#的可以去自定义扩展它的功能就好了。
1楼疯狂的懒羊羊
哦呵呵,在文中出境了!
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: