iOS專案開發實戰——實現蘋果本地訊息通知推送服務

乞力馬紮羅的雪CYF發表於2015-09-20

      當你一個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  。歡迎大家訪問!


相關文章