推送相关知识笔记

2019-07-20  本文已影响0人  黑羽肃霜

静默推送的前提是 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:

上一篇 下一篇

猜你喜欢

热点阅读