iOS--富文本推送UNNotificationExtension--基础篇


title: iOS10富文本推送–UNNotificationExtension–基础篇
date: 2017-07-14 17:48:18
tags: 原创分享

本文主要讲述如何集成富文本推送的相关扩展,另外还会有文章来详细展开

简介

本地推送和远程推送同时都可支持附带Media Attachments。不过远程通知需要实现通知服务扩展(UNNotificationServiceExtension),在service extension里面去下载attachment,但是需要注意,service extension会限制下载的时间(30s),并且下载的文件大小也会同样被限制。这里毕竟是一个推送,而不是把所有的内容都推送给用户。所以你应该去推送一些缩小比例之后的版本。比如图片,推送里面附带缩略图,当用户打开app之后,再去下载完整的高清图。视频就附带视频的关键帧或者开头的几秒,当用户打开app之后再去下载完整视频。
attachment支持图片,音频,视频,附件支持的类型及大小

准备工作

添加Notification Service Extension

在当前工程项目中添加新的Target–> Notification Service
先在Xcode 打开你的工程,File–>New–>Target然后添加这个Notification Service Extension:
 Service Extension

添加Notification Content Extension

在当前工程项目中添加新的Target–> Notification Content
先在Xcode 打开你的工程,File–>New–>Target然后添加这个Notification Content Extension:

Content Extension

添加扩展完成

这样你的项目中就会有两个Extension Target

Extension Target

设置

ServiceExtension Info.plist

  • 可以添加对http协议支持,没错,这里是支持http协议的,不像其他文章说的不支持
添加http协议支持

从Xcode7之后,iOS9之后默认创建的都不支持Http。
【方法一:】
以Source Code 打开plist文件 在第5行回车 添加以下内容:

<key>NSAppTransportSecurity</key>
<dict>
     <key>NSAllowsArbitraryLoads</key>
     <true/>
</dict>

【方法二:】
1、plist新增一行:输入App Transport Security Settings,输几个字符然后就有候选了,确定
2、点开这个一项的下箭头,新增Allow Arbitrary Loads,值可以上下键选择YES或者NO,这里选择YES。

两种操作都一样,完成之后如下图:

ServiceExtension Info.plist

ContentExtension Info.plist

  • 设置可以改变
  • 如果不想使用故事版把NSExtensionMainStoryboard替换为NSExtensionPrincipalClass(我这里已经)
    ContentExtension Info.plist

ServiceExtension基本设置

  • 当前Target的BundleID根据项目主Target的BundleID自动生成
  • 格式"项目主Target的BundleID.-当前Target名称"
  • 例如当前项目BundleID为 com.apple.NotificationDemo,ServiceExtension的名字是NotificationService
  • 那么ServiceExtension的BundleID就是com.apple.NotificationDemo.-NotificationService
  • Automatically manages signing 官方建议勾选
  • Deployment Target 必须设置为10.0以上,不能设置为10.0以下
    ServiceExtension基本设置

ContentExtension基本设置

  • 当前Target的BundleID根据项目主Target的BundleID自动生成
  • 格式"项目主Target的BundleID.-当前Target名称"
  • 例如当前项目BundleID为 com.apple.NotificationDemo,ContentExtension的名字是NotificationContent
  • 那么ServiceExtension的BundleID就是com.apple.NotificationDemo.-NotificationContent
  • Automatically manages signing 官方建议勾选
  • Deployment Target 必须设置为10.0以上,不能设置为10.0以下
    ContentExtension基本设置

如何使用

  • 首先当前应用需要支持APNS,不支持的自己集成去吧

服务器向设备发送通知

这个通知消息的格式是有要求的,有以下几点需要注意:

  • aps字段必须要有,不然收不到通知
  • aps字段下alert字段必须要有,不然也收不到通知
  • alert字段的值是字符串的时候,不可为空,不然的话你虽然收的到通知,但是是手机除了震动或者声音,没有任何提示
  • alert字段的值是字典的时候,下面这三个字段必须要有一个,不然和上面一样。就是一句话alert的值必须是可以使用的
  • mutable-content字段值最好是1,目前没见过其他值
  • 如果你想在iOS10上展示位富文本的推送格式,category字段必须带,值必须在info.plist文件中能找的到的
 {
   "aps":{
        "alert" : {
             "title" : "iOS远程消息主标题!-title",
              "subtitle" : "iOS远程消息副标题!-Subtitle",
              "body" : "longge -body"
            },
        "sound" : "default",
        "badge" : "1",
        "mutable-content" : "1",
        "category" : "Image_Category",
    },
    "image" : "http://ot260qjni.bkt.clouddn.com/testOne.jpeg"
}

上面的测试图片好像不能用了(具体能不能用你们最好测试一下,直接浏览器打开能看到就可以用),我也不知道为啥 你们可以自己去找找先关的图床。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卟败灬筱龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值