c# - 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();
}
}
}
解决方案
您需要将通知服务扩展添加到您的 Xamarin.iOS 项目,以自定义推送通知的呈现方式。
1.在 Visual Studio 中转到 File/new Project/Visual C#/iOS Exensions/Notification Service Extension。
通知服务必须有一个以 iOS 项目为前缀的包名称:
iOS 项目包 ID:www.companyname.iosappname
扩展包 ID:www.companyname.iosappname.extensionname
需要添加指向该扩展的 iOS 项目的引用。所以右键单击iOS项目,添加引用并选择扩展项目。
目前在 Visual Studio 中,将扩展引用添加到 iOS 项目后,您将只能在发布模式下运行 iOS 项目,而不能在调试模式下运行。如果你在调试模式下尝试,你会得到一个错误。要在调试模式下运行,请先从 iOS 项目中删除扩展引用。
您需要将 APNS 格式更改为:
常量字符串 templateBodyAPNS = @"{ ""aps"" : { ""alert"" : ""$(messageParam)"", ""mutable-content"": 1 }, }";
添加 "mutable-content":1 表示通知服务将拦截推送通知。
Notification Service Extension 无法与主 iOS 项目交换数据。为了在两者之间共享数据,您需要在 Apple Developer 网站上创建一个App Group 。确保将应用程序组添加到两个项目的 Entitlements.plist 文件以及 Apple 开发者网站上。
您需要在 Apple 开发者网站上为您的项目和 Notification Service Extension 激活推送通知,并为两者创建证书和配置文件。
仅发布 iOS 项目,Extension 会自动包含在内。
如果您还有其他问题,请告诉我。
推荐阅读
- coldfusion - CFHTTP 无法找到请求目标的有效证书路径
- python - 使用 Keras 进行序列标记 - 忽略前 K 个预测
- javascript - 反应生命周期方法componentDidMount()不起作用
- python - 按多列分组和丢失数据时循环遍历 Pandas 的 groupby 输出
- mongoose - Mongoose - 从其他字段派生 _id
- r - 有没有办法在 R 的轴上从 x 跳到 100?
- c++ - boost_multi_index 迭代器取消引用给出了 const
- android - Flutter 如何接收其他应用的图片
- javascript - 我使用 PEG.js 生成了一个 parser.js 文件,但是在链接到 HTML 时出现导入错误。帮助解决这个问题将不胜感激
- javascript - 如何在网页上显示我保存在 firebase 存储中的图片?(带角度8)