iOS專案開發實戰——實現蘋果本地訊息通知推送服務
當你一個App在後臺執行時,有可能伺服器會向你推送重要的資訊,常見的如微信,QQ等,就算你的App在後臺,也會以通知的形式給你推送。推送服務分為本地推送和線上推送。本次我們先來實現本地推送通知。
(1)程式碼實現如下:
#import "AppDelegate.h"
#import "ViewController.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
return YES;
}
//程式從前臺到後臺時執行該方法;
- (void)applicationDidEnterBackground:(UIApplication *)application
{
//如果已經獲得傳送通知的授權則建立本地通知,否則請求授權(注意:如果不請求授權在設定中是沒有對應的通知設定項的,也就是說如果從來沒有傳送過請求,即使通過設定也打不開訊息允許設定)
if ([[UIApplication sharedApplication]currentUserNotificationSettings].types != UIUserNotificationTypeNone) {
[self addLocalNotification];
}else{
[[UIApplication sharedApplication]registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil]];
}
}
//程式在後臺執行,再次開啟時回撥該方法;此時取消badge數字;
- (void)applicationWillEnterForeground:(UIApplication *)application
{
[[UIApplication sharedApplication]setApplicationIconBadgeNumber:0];//進入前臺取消應用訊息圖示
}
#pragma mark Notification
-(void)addLocalNotification{
//定義本地通知物件
UILocalNotification *notification=[[UILocalNotification alloc] init];
//設定呼叫時間
notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:3.0];//通知觸發的時間,10s以後
notification.repeatInterval = 2;//通知重複次數
//notification.repeatCalendar=[NSCalendar currentCalendar];//當前日曆,使用前最好設定時區等資訊以便能夠自動同步時間
//設定通知屬性
notification.alertBody=@"這是App推送的訊息通知,哈哈"; //通知主體
notification.applicationIconBadgeNumber = 1;//應用程式圖示右上角顯示的訊息數
notification.alertAction = @"開啟應用"; //待機介面的滑動動作提示
notification.alertLaunchImage = @"Default";//通過點選通知開啟應用時的啟動圖片,這裡使用程式啟動圖片
//notification.soundName=UILocalNotificationDefaultSoundName;//收到通知時播放的聲音,預設訊息聲音
notification.soundName = @"msg.caf";//通知聲音(需要真機才能聽到聲音)
//設定使用者資訊
notification.userInfo=@{@"id":@1,@"user":@"Kenshin Cui"};//繫結到通知上的其他附加資訊
//呼叫通知
[[UIApplication sharedApplication] scheduleLocalNotification:notification];
}
@end
(2)程式執行如下:
。
。
。
。
(3)我設定的是應用程式退出後3s推送通知。可以發現App圖示有一個紅色的badge,就如同微信的一樣。點選進去後,badge會消失。根據你自己的邏輯,是不是就可以方便的使用了呢?當然安裝時需要使用者授權。
github主頁:https://github.com/chenyufeng1991 。歡迎大家訪問!
相關文章
- 使用開源ntfy訊息推送服務釋出通知實現全平臺接收通知
- 【FAQ】HMS Core推送服務與本地建立通知訊息如何相互覆蓋?
- Knative 實戰:基於 Kafka 實現訊息推送Kafka
- WebSocket實現服務端推送訊息和聊天會話Web服務端會話
- workerman 實現訊息推送
- Flutter websocket 實現訊息推送FlutterWeb
- Spring Boot 整合 WebSocket 實現服務端推送訊息到客戶端Spring BootWeb服務端客戶端
- 推送服務本地通知頻次及分類管控通知
- springboot2整合websocket,實現服務端推送訊息到客戶端Spring BootWeb服務端客戶端
- iOS使用觀察者模式實現推送訊息模組化iOS模式
- 基於APNs最新HTTP/2介面實現iOS的高效能訊息推送(服務端篇)HTTPiOS服務端
- iOS 推送(蘋果原生態)iOS蘋果
- Laravel 中使用 swoole 專案實戰開發案例二 (後端主動分場景給介面推送訊息)Laravel後端
- C# 使用SignalR實現訊息通知C#SignalR
- 微信雲託管 WebSocket 實戰:基於模版實現訊息推送Web
- PHP與反ajax推送,實現的訊息實時推送功能PHP
- SpringCloud微服務實戰——搭建企業級開發框架(二十五):實現多租戶多平臺簡訊通知服務SpringGCCloud微服務框架
- PWA之前端專案,實現可安裝、離線快取、訊息推送前端快取
- Redis 實戰 —— 09. 實現任務佇列、訊息拉取和檔案分發Redis佇列
- 實時訊息推送整理
- 專案實戰:zabbix監控MySQL狀態、服務資訊MySql
- flask 專案開發實戰Flask
- NetCore專案實戰篇06---服務註冊與發現之consulNetCore
- 基於 Hyperf 實現 RabbitMQ + WebSocket 訊息推送MQWeb
- 利用localstorage實現本地訊息快取快取
- websocket(推送服務)初始化及實際專案運用Web
- 實時訊息推送方案-SSE
- 訊息的即時推送——net實現、websocket實現以及socket.io實現Web
- Laravel 實現 Kafka 訊息推送與接收處理LaravelKafka
- 專案實戰介面開發SpringBootSpring Boot
- PHP基於Redis訊息佇列實現的訊息推送的方法PHPRedis佇列
- 7種 實現web實時訊息推送的方案,7種!Web
- iOS – RxSwift 專案實戰記錄iOSSwift
- jenkins2.235.5釘釘外掛實現訊息通知Jenkins
- 蘋果於近日推送了 iOS 14.5 開發者預覽版 Beta 5蘋果iOS
- 【PWA學習與實踐】(5)在Web中進行服務端訊息推送Web服務端
- 利用WebSocket和EventSource實現服務端推送Web服務端
- 【深入淺出Sentinel原理及實戰】「基礎實戰專題」零基礎實現服務流量控制實戰開發指南(2)
- WebSocket 實現伺服器訊息推送客戶端Web伺服器客戶端