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訊息推送服務釋出通知實現全平臺接收通知
- IOS 推送訊息 php做推送服務端iOSPHP服務端
- iOS 訊息推送原理及實現DemoiOS
- WebSocket實現服務端推送訊息和聊天會話Web服務端會話
- iOS專案開發實戰——使用CoreLocation實現定位iOS
- iOS開發訊息推送原理iOS
- Knative 實戰:基於 Kafka 實現訊息推送Kafka
- iOS本地通知(推送)iOS
- workerman 實現訊息推送
- iOS專案開發實戰——使用UICollectionView實現瀑布流iOSUIView
- iOS專案開發實戰——實現檢視切換動畫iOS動畫
- Flutter websocket 實現訊息推送FlutterWeb
- iOS使用觀察者模式實現推送訊息模組化iOS模式
- iOS APNS推送遠端訊息 java後臺實現iOSJava
- Spring Boot 整合 WebSocket 實現服務端推送訊息到客戶端Spring BootWeb服務端客戶端
- 微信雲託管 WebSocket 實戰:基於模版實現訊息推送Web
- ios推送:本地通知UILocalNotificationiOSUI
- iOS專案開發實戰——使用定時器實現迴圈操作iOS定時器
- iOS專案開發實戰——使用程式碼實現頁面跳轉iOS
- iOS開發專案實戰——Swift實現ScrollView滾動條功能iOSSwiftView
- iOS 本地通知NSNotificationcenter --- iOS 開發iOS
- Redis 實戰 —— 09. 實現任務佇列、訊息拉取和檔案分發Redis佇列
- Laravel 中使用 swoole 專案實戰開發案例二 (後端主動分場景給介面推送訊息)Laravel後端
- 基於APNs最新HTTP/2介面實現iOS的高效能訊息推送(服務端篇)HTTPiOS服務端
- SpringCloud微服務實戰——搭建企業級開發框架(二十五):實現多租戶多平臺簡訊通知服務SpringGCCloud微服務框架
- PHP與反ajax推送,實現的訊息實時推送功能PHP
- JEESZ-kafka訊息服務平臺實現Kafka
- iOS開發專案實戰——Swift實現圖片輪播與瀏覽iOSSwift
- iOS專案開發實戰——理解frame,bounds,centeriOS
- iOS專案開發實戰——檢視動畫效果iOS動畫
- iOS專案開發實戰——配置自定義動畫iOS動畫
- iOS專案開發實戰——plist陣列解析iOS陣列
- PWA之前端專案,實現可安裝、離線快取、訊息推送前端快取
- Angular2-專案實戰(續)-與服務端通訊Angular服務端
- C# 使用SignalR實現訊息通知C#SignalR
- springboot2整合websocket,實現服務端推送訊息到客戶端Spring BootWeb服務端客戶端
- iOS專案開發實戰——使用CALayer和定時器實現進度條iOS定時器
- iOS專案開發實戰——使用CALayer實現圖片的淡入淡出效果iOS