首页 > 解决方案 > ios通知屏幕xamarin中通知的格式显示

问题描述

有没有办法改变文本在 ios >10 的通知区域中的显示方式?

例如,目前我正在发送 json 字符串作为包含应用程序必要信息的通知,并且在锁定屏幕或下拉菜单的通知区域中显示该 json 字符串。有没有办法自定义那里显示的文本?

我四处寻找,但我发现的东西没有帮助。当应用程序在前台时,我可以处理通知的显示。

如果不能直接发送,是否可以将通知作为静音发送,然后将格式化的通知推送到 ios 通知区域?

我的参考模板:

const string templateBodyAPNS = "{\"aps\":{\"alert\":\"$(messageParam)\", \"category\": \"test\"}}";

我试过可变内容1,也没有用。

我的扩展代码:

using System;
using UIKit;
using UserNotifications;
using UserNotificationsUI;

namespace NotificationContentExtension
{
    public partial class NotificationViewController : UIViewController, IUNNotificationContentExtension
    {
        protected NotificationViewController(IntPtr handle) : base(handle)
        {
            // Note: this .ctor should not contain any initialization logic.
        }

        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            // Do any required interface initialization here.
        }

        public void DidReceiveNotification(UNNotification notification)
        {
            label.Text = "Hello";
            new UIAlertView("Received", "Working", null, "Ok").Show();
        }
    }
}

标签: c#xamarinxamarin.ios

解决方案


您需要将通知服务扩展添加到您的 Xamarin.iOS 项目,以自定义推送通知的呈现方式。

1.在 Visual Studio 中转到 File/new Project/Visual C#/iOS Exensions/Notification Service Extension。

  1. 通知服务必须有一个以 iOS 项目为前缀的包名称:

    iOS 项目包 ID:www.companyname.iosappname

    扩展包 ID:www.companyname.iosappname.extensionname

  2. 需要添加指向该扩展的 iOS 项目的引用。所以右键单击iOS项目,添加引用并选择扩展项目。

  3. 目前在 Visual Studio 中,将扩展引用添加到 iOS 项目后,您将只能在发布模式下运行 iOS 项目,而不能在调试模式下运行。如果你在调试模式下尝试,你会得到一个错误。要在调试模式下运行,请先从 iOS 项目中删除扩展引用。

  4. 您需要将 APNS 格式更改为:

    常量字符串 templateBodyAPNS = @"{ ""aps"" : { ""alert"" : ""$(messageParam)"", ""mutable-content"": 1 }, }";

    添加 "mutable-content":1 表示通知服务将拦截推送通知。

  5. Notification Service Extension 无法与主 iOS 项目交换数据。为了在两者之间共享数据,您需要在 Apple Developer 网站上创建一个App Group 。确保将应用程序组添加到两个项目的 Entitlements.plist 文件以及 Apple 开发者网站上。

  6. 您需要在 Apple 开发者网站上为您的项目和 Notification Service Extension 激活推送通知,并为两者创建证书和配置文件。

  7. 仅发布 iOS 项目,Extension 会自动包含在内。

如果您还有其他问题,请告诉我。


推荐阅读