本地通知和遠程推送《轉載http://www.bubuko.com/infodetail-967791.html》

//也能夠參考http://www.cnblogs.com/kenshincui/p/4168532.html  崔江濤講的 很不錯哦html

 

推送通知和NSNotification是有區別的:服務器

NSNotification:是看不到的微信

推送通知:是能夠看到的app

IOS中提供了兩種推送通知ui

本地推送通知:(Local Notification):手機應用自己的通知,好比:鬧鈴atom

遠程推送通知:(Remote Notification)從服務器發送過來的通知spa

 

推送通知的做用:讓不在前臺運行的App,告知用戶App內部發生了什麼事情.好比咱們正在聊微信,忽然界面上面出現了黑色半透明橫幅(QQ好友給你發送的消息)這就是一個推送通知.htm

 

推送通知的呈現效果:對象

1:在屏幕頂部顯示一塊橫幅(顯示具體內容)blog

2:在屏幕中間彈出一個UIAlertView(顯示具體內容)

3:還能夠在呈現推送通知的同時播放音效(提醒做用)

4:屏幕鎖屏時也照樣呈現(顯示具體內容)

5:呈現推送通知的同時,還能夠更新App圖標右上角的數字(說明新內容的數量)

6:用戶接收的推送通知,都會展現在通知中心(手指從屏幕頂部往下拉的窗口)(顯示具體的內容)

 

推送通知的使用細節:

StartFragment

1:發出推送通知時,若是當前程序正運行在前臺,那麼推送通知就不會被呈現出來

 

2:點擊推送通知後,默認會自動打開發出推送通知的app

 

3:無論app打開仍是關閉,推送通知都能如期發出

什麼是本地推送通知:

顧名思義,就是不須要聯網的就能發出的推送通知(不須要服務器的支持)

本地推送通知的使用場景:

經常使用來定時提醒用戶完成一些任務,好比:清理垃圾,記帳,購物,買衣服,看電影

如何發出本地推送通知:

步驟:

1:註冊通知類型(IOS8之後)

2:建立本地推送通知對象

3:定製一個通知

 

#import "ViewController.h"

 

@interface ViewController ()

 

@end

 

@implementation ViewController

 

- (void)viewDidLoad {

    [super viewDidLoad];

    //1 :IOS8之後須要註冊通知類型,包含哪些(聲音,圖標文字,)信息,

    /*

     UIUserNotificationTypeNone    = 0

     UIUserNotificationTypeBadge   = 1 << 0 包含圖標文字(左上角的數字)0001

     UIUserNotificationTypeSound   = 1 << 1 聲音 ----------------->0010

     UIUserNotificationTypeAlert   = 1 << 2 主題內容--------------->0100

     目前是:0111,這個值是數值,下面的|||之間的內容至關於數值

     */

    // |:位移運算符 

    UIUserNotificationSettings *seting=[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert categories:nil];

    

    [[UIApplication sharedApplication]registerUserNotificationSettings:seting];    

}

 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{

    //告訴它有一個本地通知

    //2:建立一個本地推送通知對象

    UILocalNotification*local=[[UILocalNotification alloc]init];

    /*

     // timer-based scheduling  特定的時間發出通知

     @property(nonatomic,copy) NSDate *fireDate;觸發時間

     @property(nonatomic,copy) NSTimeZone *timeZone;時區

     @property(nonatomic) NSCalendarUnit repeatInterval;重複間隔

     @property(nonatomic,copy) NSCalendar *repeatCalendar;重複間隔

     @property(nonatomic,copy) CLRegion *region NS_AVAILABLE_IOS(8_0);區域

     @property(nonatomic,assign) BOOL regionTriggersOnce NS_AVAILABLE_IOS(8_0);決定區域的一個BOOL

     // alerts警告

     @property(nonatomic,copy) NSString *alertBody; 提醒的主題

     @property(nonatomic) BOOL hasAction; NO不顯示滑動解鎖按鈕  反之顯示

     @property(nonatomic,copy) NSString *alertAction; 滑動解鎖的文字     

     @property(nonatomic,copy) NSString *alertLaunchImage;  點擊通知橫幅的時候啓動程序的啓動 圖片

     @property(nonatomic,copy) NSString *alertTitle 提示的標題文字NS_AVAILABLE_IOS(8_2);

     // sound

     @property(nonatomic,copy) NSString *soundName; 伴隨的聲音,默認的是UILocalNotificationDefaultSoundName

     // badge

     @property(nonatomic) NSInteger applicationIconBadgeNumber;圖標右上角的數字

     // user info

     @property(nonatomic,copy) NSDictionary *userInfo;用戶指定的攜帶參數,轉換成鍵值對放在字典裏面

     @property (nonatomic, copy) NSString *category NS_AVAILABLE_IOS(8_0);分類

     */

 

    //給這些屬性賦值才能讓通知有特定的內容

    local.alertBody=@"女神:在嗎?";

    //特定的時間讓顯示出來(從如今5秒後顯示出來)

    local.fireDate=[NSDate dateWithTimeIntervalSinceNow:5];

    //滑動解鎖的文字(在推送通知信息的下面一小行字)

    local.alertAction =@"";

    //有聲音給聲音,沒聲音用默認的

    local.soundName=@"UILocalNotificationDefaultSoundName";

    //設置圖標右上角數字

    local.applicationIconBadgeNumber=19;

    //用戶信息

    local.userInfo=@{@"name":@"女神",@"content":@"在不",@"time":@"20180101"};

    //3:定製一個通知 

    

    [[UIApplication sharedApplication]scheduleLocalNotification:local];

    

}

 

@end

 什麼是遠程推送?

遠程:從遠程服務器推送給客戶端的通知(須要聯網)

一、應用程序註冊APNS消息推送。

二、iOS從APNS Server獲取devicetoken,應用程序接收device token。

三、應用程序將device token發送給程序的PUSH服務端程序。

四、服務端程序向APNS服務發送消息。

五、APNS服務將消息發送給iPhone應用程序。

參考

http://www.cocoachina.com/industry/20130321/5862.html

相關文章
相關標籤/搜索