iOS本地通知

UserNotifications

Xcode需要打開后臺推送的通知權限

首先這是一個系統(tǒng)級別的單利獲得

[UNUserNotificationCenter currentNotificationCenter]

請求權限

得到系統(tǒng)的單利,去請求是否有通知授權

[center requestAuthorizationWithOptions:UNAuthorizationOptionBadge|UNAuthorizationOptionSound|UNAuthorizationOptionAlert completionHandler:^(BOOL granted, NSError * _Nullable error) {
        if (granted){
            NSLog(@"通知權限請求成功");
        }else {
             NSLog(@"通知權限請求失敗");
        }
    }];

get通知的一些配置信息

- (void)getNotificationSettingsWithCompletionHandler:(void(^)(UNNotificationSettings *settings))completionHandler
  //通知配置等信息

注冊

內容

UNMutableNotificationContent->UNNotificationContent->NSObject

設置對應的content信息

  • title->標題

  • subtitle->子標題

  • body->內容

通知類型

  • 本地通知
    • UNTimeIntervalNotificationTrigger 時間觸發(fā)器
    • UNLocationNotificationTrigger 區(qū)域觸發(fā)器
    • UNCalendarNotificationTrigger 日歷觸發(fā)器
  • 遠程通知

添加通知到對應的通知請求里面,每一個請求都有一個Identifier,移除的時候需要根據identifier去移除.

添加和移除通知

添加通知

- (void)addNotificationRequest:(UNNotificationRequest *)request withCompletionHandler:(nullable void(^)(NSError *__nullable error))completionHandler

添加的時候有一個對應的identifier

移除通知

- (void)removePendingNotificationRequestsWithIdentifiers:(NSArray<NSString *> *)identifiers

另外還有兩個代理方法

- (void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions options))completionHandler {
   //將要請求通知的時候
}

- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)())completionHandler {
   //收到點擊請求的時候的通知
}

RemoteNotification(iOS8-10)

注冊遠程通知

[[UIApplication sharedApplication]registerUserNotificationSettings: [UIUserNotificationSettings settingsForTypes: (UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]]; [application registerForRemoteNotifications]

把對應的deviceToken推送到對應的蘋果服務器,根據這個deviceToken去識別唯一的設備標識

  • (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

成功或者失敗

  • (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo;?- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error;

  • (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void(^)())completionHandler //處理對應的消息
    還有集成第三方的SDK,方便快速集成,但是可能自定義不是很豐富
    騰訊信鴿 阿里云 等等
    推送測試工具

寫在最后

跳轉app代碼
這個是在ios8之后加入的,如果是ios8之前參考 app跳轉
UIApplication還有一些對應的位置,icloud等的一些:

if ([[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]) {
                        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
                     }
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容