雅星,雅星平台,雅星平台注册,雅星平台测绘有限公司欢迎您!官方唯一:【主管qq:77207】欢迎您前来咨询。

栏目导航
仪器设备
联系我们
服务热线
029-68973358
丰富的工程案例,
众多的合作客户,
精良的仪器设备,
细致的周到服务,
欢迎朋友们光临惠顾!
地址: 西安市碑林区长胜街58号
当前位置:雅星平台 > 仪器设备 >
iOS10先进的推送通知(通知扩展)
作者:admin 发布日期:2019-04-02
  • 简单的介绍
  • UNNotificationServiceExtension - 通知服务扩展
  • UNNotificationContentExtension - 通知内容延伸

这篇文章主要是约两可扩展的框架iOS10推送通知:UNNotificationServiceExtension(通知服务扩展)UNNotificationContentExtension(通知的内容扩展)。新功能推约iOS10通知,看这里

Xcode中,未通知扩展。JPEG
  • UNNotificationServiceExtension(通知服务扩展)是在收到通知的,前戏的通知,做一些事情。例如,增加的附件,网络请求,等。
  • 要发出通知,创建一个自定义用户界面,需要UNNotificationContentExtension(通知内容扩展)。

如果经常使用iMessage的朋友经常会收到附带了一些照片或视频的一些信息,它可以推动船与多媒体是非常重要的。如果这些都包含在推送多媒体信息,使用户无法打开应用程序,你可以快速浏览,无需下载内容。我们都知道,用推的有效载荷推送通知,即使负载?去年,苹果的大小升级到4K叮咬,但这么小的容量不能使用户发送张高清图片,即使是这样的画面包含了推送通知缩略图这不一定放下。在iOS中X,我们可以使用新的功能来解决这个问题。我们可以通过一个新的服务扩展解决这个问题。

iOS10添加附件注意到有两种情况:本地通知和远程通知。

  1. 本地推送通知,只是内容。附件设置UNNotificationAttachment安装对象
  2. 远程推送通知,需要实现UNNotificationServiceExtension(通知服务扩展),设置在回调方法请求处理推送内容。内容。附件(附件请求的内容)的属性,则该方法可以被调用内容Handler时。

远程推之前提供UNNotificationServiceExtension将向外推,推处理以显示机会的内容。在这一点上,你可以申请通知。添加内容的内容,例如添加附件,如用户信息。下图显示了通知服务扩展过程:

未通知服务扩展。JPG

是过程的详细信息如下:

1。为了能够服务于附件内的延伸,就必须加大对“可变内容”到APNS:1场,让你的推送通知是动态可变。


2。通知项目以创建服务扩展的一个新的扩展。

3。请求处理方法,其中:在-didReceiveNotificationRequest:withContentHandler。内容,内容作出更改通知。如通知,以通知增加的图像附件的代码样品表面后:


注意:使用UNNotificationServiceExtension,你有30秒的时间来处理这个通知,下载图像和视频可以同步到本地,然后打包成UNNotificationAttachment扔通知,这样就可以显示与服务器拍摄的图像或视频。应该注意的是:如果数据处理失败,加班,扩展信息将在崩溃的报道,但该通知会显示一个默认的形式,应用程序不会崩溃。

通知附件带来的附件格式的大小是有限的,不这样做的所有事情,前几帧的视频附件的通知是一个不错的选择。

要创建一个自定义用户界面,需要使用通知内容扩展(通知内容扩展)。

通知内容扩展(通知内容扩展)允许开发者添加自定义界面,在这个界面中,你能得到你想要的任何东西。但最重要的限制之一是,这种自定义的接口不是交互式。他们不能接受的Click事件,并且用户无法点击他们。但是,推送通知可以继续与用户进行交互,因为用户可以使用notificaiton行动。注:扩展还可以处理这些动作

1。推接口的组合物

未通知的组合物。PNG
  • 头系统提供的UI是UI标准。这个用户界面将提供给所有推送通知。
  • 以下自定义内容首部是自定义内容,是通知内容扩展(通知内容扩展)。在这里,您可以显示任何你想要绘制。您可以显示给用户的任何其他有用信息。
  • 接口是默认的内容系统。这是前9个长相推iOS版。
  • 底部通知行动,在本节中,用户可以触发一些操作。并且将这些操作反映在接口的相应的上述定义的推送内容的扩展。

2。创建通知内容扩展

创建目标的新的通知内容。Xcode中自动生成一个新的模板,这里有三个文件,视图控制器,主界面故事板,资讯。plist中。

未通知内容扩展,文件。PNG

那么在这里打开视图控制器。


视图控制器发现这里是一个正常的UIViewController,但它实现了协议UNNotificationContentExtension。

UNNotificationContentExtension协议具有所需的方法didReceiveNotification:。一旦接收指定产品分类当推,didReceiveNotification:用该方法将视图控制器生命周期方法,被称为在一起,这样我们可以接受的通知对象,更新UI。

3。配置类别

下一步是要推后到达时,系统如何找到一个自定义UI。这时候你需要配置信息的扩展。plist文件。

未通知内容扩展-INFO1。JPEG

这里,我们给通知的动作和相同的注册类别,扩大本通知规定的相应类别。写在相应类别id字段UNNotificationExtensionCategory。值得一提的是对应的类别为阵列,其可以是多个类的,目的的此类别共享相同组的多个UI的。

未通知内容扩展,INFO2。JPEG

上图中类别ID和在共同的组UI通知myNotificationCategory1 myNotificationCategory2。

设定类别后,只要在里面通知类别字段的增加,上述的值被设置在里面的plist类别ID的延长,显示的自定义样式所接收的通知。

远程通知APNS从而增加类别字段。


4。自定义用户界面

然后开始编写自定义UI。


标签,并且可以增加一些在视图控制器中的ImageView的,收到通知的时间,以提取所需的内容,或添加更多的内容,在查看我们的自定义设置。

定制UI1。PNG

五。优化

定制发现大小是非常漂亮的界面:一个优化

  1. 该时间可通过的ViewController preferredContentSize尺寸提供,自定义视图控件的大小。
  2. 约束还可以控制的自定义视图大小。

优化二:问题的目标大小来解决,但发现恢复到之前的正确尺寸的观点,先显示一个大的愣了一下,然后变成了正道。当该通知显示,其大小是不是我们想要的正常大小。iOS系统的会做一个动画的大小调整大小。这种体验很差。

定制UI2。GIF

出现上述原因这个数字是在推服的那一刻,iOS系统的需要知道我们的最后冲刺接口的大小。但是,我们打算在节目推送通知系统自定义的扩展的时刻,还没有开始。所以这个时候,我们还没有跑起来的代码之前,我们需要告诉了iOS系统,我们的视图来显示最终的大小。

为了解决这个问题,我们需要在信息的延伸。plist中在设定内容大小比。加大现场UNNotificationExtensionInitialContentSizeRatio。

未通知内容扩展,INFO3。JPEG

该属性定义的宽度和高度的比率。当然,设置该比值之后,它也不是万能的。因为你不知道你多久接收内容。当你仅仅只设置了规模,还是无法完成所有的内容显示。有时候,如果我们能够知道最终的大小,那么我们将以更好的固定大小。

优化三:在这个时候,我们发现了什么,我们定制的界面显示(自定义内容),并重复默认内容(默认内容)。

信息的扩展可以。plist中成立,则系统默认样式隐藏。加大现场UNNotificationExtensionDefaultContentHidden。

未通知内容扩展,信息4。JPEG

该系统内容隐藏效果如下:

定制UI3。PNG

6。自定义操作

动作作品iOS8上分别介绍:

行动默认的处理系统,当用户点击这个按钮,把动作传递给应用程序,同时,推送通知就会立即消失。这种做法是非常方便。

但有希望用户点击我们的自定义UI的操作按钮,及时响应效果。这时候,点击按钮后,我们把这个动作直接传递到扩展,而不是传递到应用程序。当动作传递给扩展,它可延缓消失时间推送通知。经过这段时间的延迟时间,我们可以处理用户点击按钮的事件,并更新用户界面,所有的处理完成后,我们可以做一个推送通知消失。

在这里我们可以用第二种方法UNNotificationContentExtension协议,此方法是可选


在该方法中,以确定所有的动作,更新的接口,和延迟1。让我们消失5秒后通知。真实的情况可能是,点击“Like”按钮,将请求发送到服务器,服务器返回结果显示通知UI界面上不同的效果,然后消失。如果一个评论,它会检查更新界面。

如果你想这个动作转移的应用程序,最后消失参数应该是这样的:


但是我遇到了这种情况下的实际操作中,如果单击动作类型UNNotificationActionOptionForeground,即使完成设置为关闭,系统通知无法消失,也无法启动应用程序,在这里不明白为什么,如果有理由知道,请大家评论。

7。自定义输入型操作

有两种类型的行动:

  • UNNotificationAction按钮风格
  • UNTextInputNotificationAction输入框样式

UNTextInputNotificationAction风格如下:

定制UI4。PNG

进入诉讼制度的风格,只有当你发送按钮点击响应回调接收操作。(比如上面didReceiveNotificationResponse:completionHandler:方法)。但有时形式或系统的功能不能满足需求,这时候你可以自定义键盘上方inputAccessoryView。

首先,以下两种方法的重写的ViewController:


自inputAccessoryView,绘制自定义输入风格。


点击评论按钮实现,视图控制器成为第一个响应,显示自定义输入风格。然后,让文本框成为第一个响应者,在弹出的键盘。

必要时该操作完成保存召回。例如,您可以点击键盘的发送按钮右下角上,呼叫完成,通知消失。


为了达到效果入下:

定制UI5。PNG

当内容可扩展接口,通知由内而外绘制。请求。content。附件附件得到把自定义控件内。


我们可以提取附件的内容。前面提到的,附件是由系统来管理,他们将单独的管理系统,这意味着它们被储存在我们的沙箱之外。所以在这里之前,我们必须使用附件,我们需要告诉了iOS系统中,我们需要使用它,并告诉该系统建成使用后,我们使用完。对应于上述的操作码是-startAccessingSecurityScopedResource和-stopAccessingSecurityScopedResource。当我们到达正确使用附件,我们可以把这个文件来获得我们想要的信息。

很多人遇到的iOS开发扩展到调试问题时,该解决方案可以在这里看到,如果不能有效地解决你的问题,欢迎大家提出意见。

检查出更多的代码来实现演示,如发现问题,请帮助纠正。

参考

  • iOS10用户通知学习笔记
  • [WWDC2016会话]的iOS 10的新功能推送通知