首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用UNUserNotificationCenter和UNNotificationServiceExtension实现willPresentNotification的调用序列

UNUserNotificationCenter是iOS中的一个类,用于管理和处理本地和远程通知。它提供了一系列方法和属性,用于注册通知、处理通知的展示和交互等操作。

UNNotificationServiceExtension是一个iOS的扩展,用于在通知展示之前对通知进行处理。它允许开发者在通知展示之前执行一些自定义的操作,例如修改通知的内容或添加附件。

实现willPresentNotification的调用序列可以通过以下步骤完成:

  1. 创建一个继承自UNNotificationServiceExtension的通知服务扩展类,并实现其中的didReceiveNotificationRequest方法。这个方法会在接收到通知请求时被调用。
  2. 在didReceiveNotificationRequest方法中,可以获取到通知的内容、标识符等信息。可以对通知进行自定义处理,例如修改通知的内容或添加附件。
  3. 在扩展类中,可以使用UNMutableNotificationContent类来修改通知的内容。可以通过该类的属性来修改通知的标题、副标题、正文等内容。
  4. 在扩展类中,可以使用UNNotificationAttachment类来添加附件到通知中。可以通过该类的方法将图片、音频、视频等文件添加为通知的附件。
  5. 在扩展类中,可以使用UNNotificationSound类来设置通知的声音。可以通过该类的方法设置通知的声音文件。
  6. 在扩展类中,可以使用UNNotificationTrigger类来设置通知的触发条件。可以通过该类的方法设置通知的触发时间、重复间隔等。
  7. 在扩展类中,可以使用UNNotificationRequest类来创建一个新的通知请求。可以通过该类的方法设置通知的标识符、内容、触发条件等。
  8. 在扩展类中,可以使用UNUserNotificationCenter类的add方法将新创建的通知请求添加到通知中心中。可以通过该方法将通知请求添加到通知中心的待处理队列中。
  9. 在应用的主工程中,可以使用UNUserNotificationCenter类的delegate属性来设置通知中心的代理对象。可以通过该属性来接收通知的展示和交互等事件。
  10. 在代理对象中,可以实现UNUserNotificationCenterDelegate协议中的willPresent方法。这个方法会在通知展示之前被调用,可以在该方法中进行一些自定义的操作。

总结起来,使用UNUserNotificationCenter和UNNotificationServiceExtension可以实现对通知的自定义处理和展示。通过创建通知服务扩展类,并实现其中的方法,可以对通知的内容、附件、触发条件等进行自定义设置。在应用的主工程中,可以设置通知中心的代理对象,并在代理对象中实现相关方法来处理通知的展示和交互事件。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • iOS10通知框架UserNotification理解与应用

    关于通知,无论与远程Push还是本地通知,以往的iOS系统暴漏给开发者的接口都是十分有限的,开发者只能对标题和内容进行简单的定义,至于UI展示和用户交互行为相关的部分,开发者开发起来都十分困难。至于本地通知,iOS10之前采用的是UILocationNotification类,远程通知有苹果服务器进行转发,本地通知和远程通知其回调的处理都是通过AppDelegate中的几个回调方法来完成。iOS10系统中,通知功能的增强是一大优化之处,iOS10中将通知功能整合成了一个框架UserNotification,其结构十分类似于iOS8中的UIWebView向WebKit框架整合的思路。并且UserNotification相比之前的通知功能更加强大,主要表现在如下几点:

    03

    iOS13微信收款到账语音提醒开发总结

    随着苹果爸爸在WWDC2019发布了新的iOS13,两年前的这篇微信iOS收款到账语音提醒开发总结方案已经不再适用,具体的原因是iOS13中(准确的说是使用XCode11编译)苹果不再允许PushKit应用在非voip电话的场景上。在iOS13中,苹果比以往更关注用户的隐私以及设备的电池续航问题,所以对PushKit的能力进行了收拢。如果需要使用PushKit的话则需要接入CallKit的接口,导致收到客户端收到Voip Push时会拉起一个接打电话的全屏界面,有在国区发布过应用的同学应该知道拉起这个界面是不被甲方允许的。这篇文章总结了在iOS13下的语音播报迁移方案以及一些需要注意的问题。目前微信的7.0.10版本已经带上了这部分的特性。

    06

    Java反序列化源码深入追踪

    实际上,Externalizable接口继承自Serializable接口,但他们的序列化机制是完全不同的:使用Serializable的方式,在反序列化时不会直接调用被序列化对象的构造器,而是先获取被序列化对象对应类的 【自下而上最顶层实现了Serializable的祖先类的超类】【即自上而下连续的最后一个未实现Serizable接口的类】的构造器,然后在此构造器的基础上重新创建一个新的构造器来完成实例化。这句话读起来有些拗口,我们后面分析Serializable反序列化机制时还会详细介绍。而使用Externalizable则是调用一个无参构造方法来实例化,原因如下: Externalizable序列化的过程:使用Externalizable序列化时,在进行反序列化的时候,会重新实例化一个对象,然后再将被反序列化的对象的状态全部复制到这个新的实例化对象当中去,这也就是为什么会调用构造方法啦,也因此必须有一个无参构造方法供其调用,并且权限是public。

    02

    Hessian 反序列化及相关利用链

    前不久有一个关于Apache Dubbo Http反序列化的漏洞,本来是一个正常功能(通过正常调用抓包即可验证确实是正常功能而不是非预期的Post),通过Post传输序列化数据进行远程调用,但是如果Post传递恶意的序列化数据就能进行恶意利用。Apache Dubbo还支持很多协议,例如Dubbo(Dubbo Hessian2)、Hessian(包括Hessian与Hessian2,这里的Hessian2与Dubbo Hessian2不是同一个)、Rmi、Http等。Apache Dubbo是远程调用框架,既然Http方式的远程调用传输了序列化的数据,那么其他协议也可能存在类似问题,例如Rmi、Hessian等。@pyn3rd师傅之前在twiter[1]发了关于Apache Dubbo Hessian协议的反序列化利用,Apache Dubbo Hessian反序列化问题之前也被提到过,这篇文章[2]里面讲到了Apache Dubbo Hessian存在反序列化被利用的问题,类似的还有Apache Dubbo Rmi反序列化问题。之前也没比较完整的去分析过一个反序列化组件处理流程,刚好趁这个机会看看Hessian序列化、反序列化过程,以及marshalsec[3]工具中对于Hessian的几条利用链。

    03
    领券