zoukankan      html  css  js  c++  java
  • Windows Phone 8.1 Tiles, Notifications and Action Center

    (1)Tiles

    Tiles 也就是磁贴,是 Windows Phone 的一大特色。

    一个 Tile 其实可以看成是一个 XML,比如:

    <tile>
      <visual>
        <binding template="TileSquareImage">
          <image id="1" src="image1" alt="alt text"/>
        </binding>  
      </visual>
    </tile>
    
    <tile>
      <visual version="2">
        <binding template="TileSquare150x150Image" fallback="TileSquareImage">
          <image id="1" src="image1" alt="alt text"/>
        </binding>  
      </visual>
    </tile>

    微软为我们提供了一系列模板,具体可参照:链接

    只要根据模板的 XML 格式,便可轻松的更新 Tile:

    private void updateButton_Click(object sender, RoutedEventArgs e)
    {
        UpdateTiles("ms-appx:///Images/Middle.png", "ms-appx:///Images/Wide.png");
    }
    
    private void UpdateTiles(string middlePath, string widePath)
    {
        string tileString = "<tile>" +
                               "<visual version="2">" +
                                  "<binding template="TileSquare150x150PeekImageAndText04" fallback="TileSquarePeekImageAndText04">" +
                                      "<image id="1" src="" + middlePath + "" alt="alt text"/>" +
                                      "<text id="1"></text>" +
                                    "</binding>" +
                                    "<binding template="TileWide310x150ImageAndText01" fallback="TileWideImageAndText01">" +
                                      "<image id="1" src="" + widePath + "" alt="alt text"/>" +
                                      "<text id="1"></text>" +
                                  "</binding>" +
                               "</visual>" +
                           "</tile>";
        XmlDocument tileXML = new XmlDocument();
        tileXML.LoadXml(tileString);
    
        TileNotification newTile = new TileNotification(tileXML);
        TileUpdater updater = TileUpdateManager.CreateTileUpdaterForApplication();
        updater.EnableNotificationQueue(false);
        updater.Update(newTile);
    }

    除了主磁贴外我们还可以新建 SecondaryTile:

    private void createButton_Click(object sender, RoutedEventArgs e)
    {
        CreateTile("ms-appx:///Images/Middle.png", "ms-appx:///Images/Wide.png");
    }
    
    private async void CreateTile(string middlePath, string widePath)
    {
        SecondaryTile tile = new SecondaryTile("Cortana", "Cortana", "Some", new Uri(middlePath), TileSize.Default);
        tile.VisualElements.ShowNameOnSquare150x150Logo = true;
        tile.VisualElements.ForegroundText = ForegroundText.Dark;
        tile.VisualElements.Square30x30Logo = new Uri(middlePath);
        tile.VisualElements.Wide310x150Logo = new Uri(widePath);
        await tile.RequestCreateAsync();
    }

    SecondaryTile 的更新与主磁贴更新一样:

    TileUpdater update = TileUpdateManager.CreateTileUpdaterForSecondaryTile("Cortana");

    (2)Notifications

    Notification(推送通知)分为 Tile,Badge,Toast,Raw 四种类型,而通知的方式又分为 Scheduled,Periodic,Local,Push 四种,它们之间对应的关系为:

    使用方法都大同小异,根据各自的 XML 格式修改再调用 Update 方法即可,例如:

    XmlDocument xml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText04);
    ToastNotification toast = new ToastNotification(xml);
    ToastNotifier notifier = ToastNotificationManager.CreateToastNotifier();
    notifier.Show(toast);

    需要注意的是:(1)Toast 通知需要在 Manifest 中许可;(2)Push 方法为:

    private async void SendRawNotification()
    {
        var channel = await PushNotificationChannelManager.CreatePushNotificationChannelForApplicationAsync();
        channel.PushNotificationReceived += channel_PushNotificationReceived;
    }
    
    private void channel_PushNotificationReceived(PushNotificationChannel sender, PushNotificationReceivedEventArgs args)
    {
        var raw = args.RawNotification;
    }

    (3)Action Center

    1)每个应用最多可以在 Action Center 中驻留 20 条通知

    2)通知最多可驻留 7 天

    3)可发送静默通知(不会提示用户)

    toast1.SuppressPopup = true;

    4)可对通知进行分组

    XmlDocument xml = ToastNotificationManager.GetTemplateContent(ToastTemplateType.ToastText04);
    
    ToastNotification toast1 = new ToastNotification(xml);
    toast1.Group = "One";
    toast1.Tag = "1";

    5)可更新或删除通知(可删除某一组)

    ToastNotificationManager.History.RemoveGroup("One");
  • 相关阅读:
    Java 实现 蓝桥杯 生兔子问题
    Java实现 蓝桥杯 基因牛的繁殖
    Java实现 蓝桥杯 基因牛的繁殖
    Java实现 蓝桥杯 基因牛的繁殖
    Java实现 LeetCode 33 搜索旋转排序数组
    Java实现 LeetCode 33 搜索旋转排序数组
    Java实现 LeetCode 33 搜索旋转排序数组
    深入探究VC —— 资源编译器rc.exe(3)
    深入探究VC —— 编译器cl.exe(2)
    深入探究VC —— 编译器cl.exe(1)
  • 原文地址:https://www.cnblogs.com/xiaoshi3003/p/3764507.html
Copyright © 2011-2022 走看看