IOS中程式如何進行推送消息(本地推送,遠程推送)

来源:http://www.cnblogs.com/wolfhous/archive/2016/01/16/5135711.html
-Advertisement-
Play Games

---------------轉載註明出處----------由於本地推送消息和遠程推送消息有部分機制不一樣,所有此demo寫本地推送,關於遠程推送我會在後面的博客上補上.[1]-------------什麼是推送消息? 我就以一張圖解釋------------[2]-----------IOS程式...


---------------轉載註明出處----------

由於本地推送消息和遠程推送消息有部分機制不一樣,所有此demo寫本地推送,關於遠程推送我會在後面的博客上補上.

[1]-------------什麼是推送消息? 我就以一張圖解釋------------

[2]-----------IOS程式中如何進行本地推送?-----------

2.1,先征求用戶同意

1 /**
2      *  IOS8以後,推送通知需要征求用戶同意
3      */
4     UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil];
5     [application registerUserNotificationSettings:settings];
6     NSLog(@"當前APP沒有死掉----%@",launchOptions);

 

2.2創建本地通知對象(UILocalNotification 這個類來管理,設置什麼時候通知,通知的消息內容等)

UILocalNotification *localN = [UILocalNotification new];

 

  設置處理通知的一些屬性

  fireDate時間 

  alertTitle標題

  alertBody通知內容

  soundName聲音,

  applicationIconBadgeNumber圖標數字

  alertAction鎖屏狀態下的通知消息

  其他參數:

    timeZone時區

    repeatInterval重覆間隔...

    alertLaunchImage點擊通知的啟動圖片

2.3安排通知

[[UIApplication sharedApplication]scheduleLocalNotification:(UILocalNotification*)];

 

2.4安排通知後,就會在手機上收到了,此時需要處理點擊接受到的通知後的處理

 /** 接收本地通知  程式在前臺 程式在後臺 鎖屏 */

- (void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification

{

    NSLog(@"%@",notification);

}

2.5 可以根據需求,取消通知.

--------------放xcode截圖----------最後放源碼------註意是摺疊源碼-------------

-------再感受一下通知-----當程式被用戶向上劃掉了也能接收通知-------

---------源碼,摺疊的----------

 1 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
 2     /**
 3      *  IOS8以後,推送通知需要征求用戶同意
 4      */
 5     UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|UIUserNotificationTypeBadge|UIUserNotificationTypeSound categories:nil];
 6     [application registerUserNotificationSettings:settings];
 7     NSLog(@"當前APP沒有死掉----%@",launchOptions);
 8     
 9     //-------------------進程死掉分割線--------------
10     
11 
12     /**
13      *  APP死掉後,會進入該方法
14      通過launchOptions的 key UIApplicationLaunchOptionsLocalNotificationKey
15      這個key 取得 本地通知對象  有通知對象 就代表是點通知進來的
16      */
17     if (launchOptions) {
18         /**
19          APP死掉情況下,點擊通知,我在rootViewController添加一個lable
20          */
21         UILabel *label = [[UILabel alloc]init];
22         label.backgroundColor = [UIColor redColor];
23         label.frame = CGRectMake(50, 100, 300, 200);
24         label.numberOfLines = 0;
25         label.text = [launchOptions[UIApplicationLaunchOptionsLocalNotificationKey] description];
26         label.font = [UIFont systemFontOfSize:11];
27         [self.window.rootViewController.view addSubview:label];
28         //程式死掉,點擊通知進入設置角標為0
29         application.applicationIconBadgeNumber = 0;
30     }
31     
32     return YES;
33 }
34 /**  APP未死,點擊接收到的本地通知後,會執行該方法*/
35 -(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
36 {
37     NSLog(@"點擊了接收到了本地通知");
38     /**
39      *  把程式角標設置為0,因為你是點擊通知進來的
40      */
41     application.applicationIconBadgeNumber = 0;
42 }
AppDelegate.m
 1 #import "ViewController.h"
 2 
 3 @interface ViewController ()
 4 //聲明一個通知屬性
 5 @property (nonatomic,strong)UILocalNotification *localNoti;
 6 @end
 7 
 8 @implementation ViewController
 9 
10 - (void)viewDidLoad {
11     [super viewDidLoad];
12    
13 }
14 
15 //註冊本地通知
16 - (IBAction)registerBtn:(id)sender {
17     
18     self.localNoti = [UILocalNotification new];
19     self.localNoti.fireDate = [NSDate dateWithTimeIntervalSinceNow:5];//5秒後發送通知
20     self.localNoti.alertBody = @"wolfhous接收到了5條新消息";
21     self.localNoti.alertTitle = @"title內容";
22     self.localNoti.soundName = @"close.wav";//通知聲音
23     self.localNoti.alertAction = @"鎖屏狀態下的通知內容(灰階狀態顯示)";
24     self.localNoti.applicationIconBadgeNumber = 5;//UIUserNotificationTypeBadge(程式角標
25     [[UIApplication sharedApplication]scheduleLocalNotification:self.localNoti];
26     
27 }
28 
29 //取消本地通知
30 - (IBAction)cancelBut:(id)sender {
31     NSArray *notes = [UIApplication sharedApplication].scheduledLocalNotifications;
32     NSLog(@"%@",notes);
33     //取消某個通知
34     [[UIApplication sharedApplication]cancelLocalNotification:self.localNoti];
35 //    取消所有通知
36 //    [UIApplication sharedApplication]cancelAllLocalNotifications;
37 }
38 
39 /**
40  *  接收到通知後,如果沒有點擊通知進入程式,程式角標是不會變化的
41     所以我在此設置了一個but,取消程式角標
42  */
43 - (IBAction)deleteNum:(id)sender {
44     //假設閱讀了5條通知,就取消5條通知角標.
45     [UIApplication sharedApplication].applicationIconBadgeNumber =0;
46 }
47 
48 @end
ViewController.m

------歡迎討論-----關於遠程推送,我會在接下來的博客中補充,先補一張遠程推送機制-------自行補腦-------

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • js倒計時關閉當前頁面代碼:很多網站在關閉網頁之前會給出一個倒計時效果,這樣可以讓瀏覽者做到根據相應的情況進行操作,比較人性化,下麵就通過實例代碼介紹一下如何實現此效果。代碼實例如下:螞蟻部落以上代碼實現了我們想要的功能,可以倒計時10秒之後關閉頁面。原理非常的簡單,就是利用定時器函數setInte...
  • 1.CSS overflow 屬性2.標簽 標簽用於搜集用戶信息。1 type屬性根據不同的 type 屬性值,輸入欄位擁有很多種形式。可以是文本欄位、覆選框、掩碼後的文本控制項、單選按鈕、按鈕等等。text:文本區域 readonly屬性:是否只讀。password:密碼區域,輸入的文本以'*...
  • 相容低版本IE瀏覽器的背景顏色漸變效果:大多數的相容性問題都是由於低版本的IE瀏覽器所導致的,本章節分享一段代碼實例,它能夠實現背景的顏色的漸變效果,如果在標準瀏覽器中直接採用css3屬性即可實現,但是IE低版本的問題所以需要進行一下相容性處理。代碼如下:螞蟻部落上面的代碼實現了我們的要求,標準瀏覽...
  • 使用jquery實現的多級樹形菜單代碼實例:樹形菜單在網站中有大量的應用,這當然是因為它的獨特優點,首先它可以有效的組織數據,使分類更為清晰明瞭,通常情況下樹形菜單是可以摺疊的,這樣可以以更小的空間容納更多的數據,下麵就詳細介紹一個使用jquery實現的屬性菜單。代碼實例如下:螞蟻部落 KPI考核....
  • 點擊刪除時彈出是否刪除提示框:在通常情況下,想要點擊刪除某一項的時候,一般會彈出一個框,以提示操作者是否真的要刪除此項,這樣可以免於出現誤操作,比較人性化的一個舉措,下麵就簡單介紹一下如何實現此效果。實例代碼:點擊刪除提示框點擊刪除以上代碼實現了我們的要求,這裡主要是使用了confirm()函數。具...
  • css清除浮動代碼實例演示:在頁面中如果採用了浮動,那麼清除浮動則是必須要進行的操作,否則可能引起一些意想不到的後果。本章節不會對浮動或者清除浮動的原理做介紹,只是分享一下清除浮動的幾段代碼,因為有些朋友可能需要的就是一個代碼實例,關於浮動或者清除清除浮動的相關內容可以參閱相關閱讀。一.使用over...
  • 選項卡切換的新聞列表效果代碼實例:利用選項卡切換的新聞列表在很多網站都有應用,當然優點也是不言而喻的,利用更小的空間可以容納更多的新聞內容,並且也容易組織分類效果,下麵就是一個這樣的代碼實例,下麵就介紹一下它的實現過程。代碼如下:螞蟻部落 螞蟻部落一 螞蟻部落二 ...
  • js二進位和十進位轉換代碼:十進位和二進位的轉換是在編碼中是時常用到的,下麵就是一段這樣的代碼實例,希望能夠給需要的朋友帶來幫助。代碼實例如下:螞蟻部落十進位:二進位:以上代碼實現了二進位和十進位之間的轉換,其實非常的簡單,因為js本身就提供了這樣的函數。相關閱讀:1.isNaN()函數可以參閱ja...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...