美文网首页
推送相关知识笔记

推送相关知识笔记

作者: 黑羽肃霜 | 来源:发表于2019-07-20 21:55 被阅读0次
  • 本地推送
  • 远程推送
    • 静默推送,实际上是普通推送的一种特殊状态。静默推送是不允许带 alert badge sound 等字段的. 但是必须包含 "content-available":1.
    • 普通推送

静默推送的前提是 APP 没有被杀死, 可以通过回调函数来执行相关的代码.
相关讨论

静默推送通常搭配 后台模式使用。后台模式: background Fetch。后台模式必须开启后台刷新权限
Background Fetch 会为我们的 App 争取更多的后台时间, 但是一般是几十秒左右, 不会太多. 所以, 不要在回调中做太多耗时的操作.

// 普通推送
{
    "aps":
        {
            "alert":"Testing.. (15),
            "badge":1,
            "sound":"default"
        }
}

// 静默推送
{
    "aps":
        {
            "content-available":1
        }
}

参考资料1
参考资料2
参考资料3


// 发送推送
    if (@available(iOS 10.0, *)) {
        UNMutableNotificationContent *content = [[UNMutableNotificationContent alloc] init];
        content.title              = @"已断开"; // 这个 title 实际上不会弹出,只是为了
        UNTimeIntervalNotificationTrigger * timerTrigger = [UNTimeIntervalNotificationTrigger triggerWithTimeInterval:1
                                                                                                              repeats:false];
        NSString *requestID = @"VPN_disConnectedID";
        UNNotificationRequest *request = [UNNotificationRequest requestWithIdentifier:requestID content:content trigger:timerTrigger];
        UNUserNotificationCenter *center = [UNUserNotificationCenter currentNotificationCenter];
        [center addNotificationRequest:request withCompletionHandler:^(NSError * _Nullable error) {
        }];
    } else {
        
    }

如果需要通知栏中点击的效果,需要使用 actions

let likeAction = UNNotificationAction(identifier: "like", title: "好感動", options: [.foreground])
let dislikeAction = UNNotificationAction(identifier: "dislike", title: "沒感覺", options: [])
let category = UNNotificationCategory(identifier: "luckyMessage", actions: [likeAction, dislikeAction], intentIdentifiers: [], options: [])
UNUserNotificationCenter.current().setNotificationCategories([category])

那么 UNMutableNotificationContent 中的 categoryID 就必须要赋值
content.categoryIdentifier = "luckyMessage"


本地推送的控制,几个回调的理解

application:didReceiveLocalNotification:

  • ios 10 之前
    • app 在前台运行,接收到本地推送,会进入这个回调
    • app 在后台运行,接受到本地推送后点击
      • 此时 app 未启动,会先进入 application:willFinishLaunchingWithOptionsapplication:didFinishLaunchingWithOptions:, 在 (NSDictionary *)launchOptions 这个字典中有一个 UIApplicationLaunchOptionsLocalNotificationKey 对应的 值就是通知传过来的信息。 在这部分操作之后,再进入到这个回调中。
      • 此时 app 启动,接收到本地推送,会进入这个回调
  • ios 10 之后
    • app 在前台运行,接收到本地推送,会进入另一个代理。官方文档内容为

      Use userNotificationCenter:willPresentNotification:withCompletionHandler: instead.

    • app 在后台运行,接受到本地推送后点击
      • 此时 app 未启动,会正常的启动 app,此时需要去添加判断
      • 此时 app 启动,会进入到 didReceiveNotificationResponse 回调
  • title NSString 限制在一行,多出部分省略号
  • subtitle NSString 限制在一行,多出部分省略号
  • body NSString 通知栏出现时,限制在两行,多出部分省略号;预览时,全部展示

相关文章

  • 推送相关知识笔记

    本地推送 远程推送静默推送,实际上是普通推送的一种特殊状态。静默推送是不允许带 alert badge sound...

  • 远程推送(二): Android 的远程推送

    上篇文章介绍了iOS 远程推送的相关知识,这次来讲讲Android 的远程推送。 Android 远程推送几种常用...

  • 推送相关

    推送:https://www.jianshu.com/p/0ab721604877 iOS图片推送的一些开发小Tips

  • 推送相关

    前情 NS_AVAILABEL_IOS(6_0)表示,自IOS6.0开始支持该方法,若在IOS6.0之前的版本使用...

  • 推送相关

    由于近期需求规划又涉及到了Push相关的内容,所以翻出来之前学习的Push相关文章,并又知乎了下当前iOS通知的一...

  • Fresco和Glide比较

    欢迎搜索微信公众号SamuelAndroid关注我, 定期推送Android相关知识! Fresco (-) Hu...

  • iOS推送通知

    学习iOS开发已经两年多了,推送方面一直使用第三方极光推送,对推送没有进行系统的学习。今天我就把推送相关的知识点梳...

  • iOS推送注册相关知识点

    兼容iOS7 iOS8的注册方式 判断用户是否注册推送 option 相关 假如用户勾选推送时显示badge和提示...

  • 本地推送的相关知识点

    本地推送 iOS10 在iOS10 中,推送授权方法做了很大改变,下面是授权和注册方法,要使用本地推送,首先要进行...

  • 2019-05-04

    文综 1.做题→相关知识点。 2.画框架→勾连相关知识点→做相关题 语文: 听课→笔记→输出 做题→总结→输出 英...

网友评论

      本文标题:推送相关知识笔记

      本文链接:https://www.haomeiwen.com/subject/hckplctx.html