对比微信小程序,App Clip可以接受通知消息,这个功能对于我们App Clip也很重要,系统允许App Clip在每次启动后最多8个小时之内,可以接受通知消息。
临时接受通知
要使App Clip在每次启动后最多8小时内接收通知,请首先将NSAppClip key添加到App Clip的info.plist文件中,并将其类型设置为Dictionary。然后,将NSAppClipRequestEphemeralUserNotification key添加到NSAppClip字典中,将其类型设置为Boolean,将其值设置为true。
将NSAppClipRequestEphemeralUserNotification添加到App Clip的info.plist之后,调用app clip时显示的app clip card包含一个附加说明,告诉用户app clip可以开启通知。默认情况下启用此权限,但用户可以通过点击app clip card上的提示来禁用它。
20.png
因为用户可以禁用app clip card中的通知,所以在App Clip需要添加代码检查是否开启了通知的权限。检查示例代码如下:
let center = UNUserNotificationCenter.current()
center.getNotificationSettings { (settings) in {
if settings.authorizationStatus == .ephemeral {
// The user didn't disable notifications in the app clip card.
// Add code for scheduling or receiving notifications here.
return
}
}
申请给App Clip时长权限
如果App Clip需要一天以上的通知功能,需要明确请求用户发送通知的权限。例如,汽车租赁公司的App Clip提醒用户何时需要归还租用的汽车,可以请求允许接收通知。但是请慎重考虑此功能,因为用户可以拒绝接受通知消息。
设置你的通知信息
你可以为多个企业创建一个App Clip。例如,你可能是餐厅平台的提供商,你可以为许多不同业务的餐厅提供一个App Clip,如果用户在短时间内启动了这个App Clip为了这些餐厅,则其设备上可能存在多个app clip实例。
在这种情况下,当收到通知时,系统需要将通知匹配app clip实例。因此,系统要求App Clip通知信息中包含一个URL作为目标内容id。示例代码如下:
{
"aps" : {
"alert" : {
"title" : "Order Status",
"subtitle" : "Restaurant A",
"body" : "Your order is ready."
},
"category" : "order_status",
"target-content-id" : "https://example.com/restaurants/restaurant_a/order/1234"
}
}
target-content-id的值必须是对应高级App Clip体验匹配的URL。对于刚才的餐厅例子,你将在App Store Connect中注册以下两个URL:
- https://example.com/restaurants/restaurant_a
-
https://example.com/restaurants/restaurant_b
启动App Clip的URL和target-content-id的URL可以是: - example.com/restaurants/restaurant_a/order/1234
- https://example.com/restaurants/restaurant_b/order/5678
苹果推荐给App Clip发通知时使用target-content-id。如果是App Clip本地通知,可以使用内容id可以使用targetContentIdentifier
。
网友评论