iOS訊息機制
一、本地推送
iOS 推送通知分為本地推送和遠端推送通知,遠端推送通知就類似於我們平時使用微信時,即使鎖屏了,也能收到好友傳送給我們的訊息,然後在主螢幕顯示一個alertview,遠端推送需要遠端服務端的支援,比較複雜. 本地推送相對比較簡單,不需要服務端的支援。
本地通知是NSLocalNotification 實現的,透過例項化一個NSLocalNotification型別的通知,同時設定通知的fireDate 屬性,即通知的觸發時間;設定timeZone屬性,即時區;設定alertBody,顯示的內容;設定alertAction;設定soundName,即推送發生時的聲音;設定applicationIconBadgeNumber,即圖示上的數字;設定userInfo屬性,該屬性是一個NSDictionary型別的變數。然後在使用UIApplication 的 例項方法scheduleLocalNotification:或 presentLocalNotificationNow: 推送通知。
* 1、建立本地推送 *
// 建立一個本地推送
UILocalNotification *notification = [[[UILocalNotification alloc] init] autorelease];
//設定10秒之後
NSDate *pushDate = [NSDate dateWithTimeIntervalSinceNow:10];
if (notification != nil) {
// 設定推送時間
notification.fireDate = pushDate;
//推送時區設定:從網上搜到
//timeZone是UILocalNotification激發時間是否根據時區改變而改變,如果設定為nil的話,
//那麼UILocalNotification將在一段時候後被激發,而不是某一個確切時間被激發。
notification.timeZone = [NSTimeZone defaultTimeZone];
// 設定重複間隔,若不設定將只會推送1次
notification.repeatInterval = kCFCalendarUnitDay;
// 推送聲音,(若不設定的話系統推送時會無聲音)
notification.soundName = UILocalNotificationDefaultSoundName;
// 推送內容,(若不設定,推送中心中不顯示文字,有聲音提示前提是設定有聲音)
notification.alertBody = @"推送內容";
//推送時小圖示的設定,PS:這個東西不知道還有啥用
notification.alertLaunchImage=[[NSBundle mainBundle]pathForResource:@"3" ofType:@"jpg"];
//顯示在icon上的紅色圈中的數子
notification.applicationIconBadgeNumber = 1;
//設定userinfo 方便在之後需要撤銷的時候使用
NSDictionary *info = [NSDictionary dictionaryWithObject:@"name"forKey:@"key"];
notification.userInfo = info;
//講推送設定以及資訊加入
UIApplication* app=[UIApplication sharedApplication];
BOOL status=YES;
for (UILocalNotification* notification in app.scheduledLocalNotifications)
{
if ([notification.userInfo objectForKey:@"key"]) {
status=NO;
}
}
if (status) {
//加入推送(只能加入一次)
[app scheduleLocalNotification:notification];
}
}
* 2、接收本地推送 *
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"iWeibo" message:notification.alertBody delegate:nil cancelButtonTitle:@"確定" otherButtonTitles:nil];
[alert show];
// 圖示上的數字減1
application.applicationIconBadgeNumber -= 1;
}
* 3、解除本地推送 *
// 獲得 UIApplication
UIApplication *app = [UIApplication sharedApplication];
//獲取本地推送陣列
NSArray *localArray = [app scheduledLocalNotifications];
//宣告本地通知物件
UILocalNotification *localNotification;
if (localArray) {
for (UILocalNotification *noti in localArray) {
NSDictionary *dict = noti.userInfo;
if (dict) {
NSString *inKey = [dict objectForKey:@"key"];
if ([inKey isEqualToString:@"對應的key值"]) {
if (localNotification){
[localNotification release];
localNotification = nil;
}
localNotification = [noti retain];
break;
}
}
}
//判斷是否找到已經存在的相同key的推送
if (!localNotification) {
//不存在初始化
localNotification = [[UILocalNotification alloc] init];
}
if (localNotification) {
//不推送 取消推送
[app cancelLocalNotification:localNotification];
[localNotification release];
return;
}
}
二、遠端推送
閱讀參考連結。
* 參考連結 *
本地推送
遠端推送:
- http://blog.csdn.net/enuola/article/details/8627283
- http://www.cnblogs.com/yh-qfnu/p/3269768.html
- http://www.cocoachina.com/ios/20100401/900.html
- http://blog.csdn.net/dalehui/article/details/16807157
- http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1
- http://www.raywenderlich.com/32963/apple-push-notification-services-in-ios-6-tutorial-part-2
- http://mobiforge.com/design-development/programming-apple-push-notification-services
- http://segmentfault.com/a/1190000000520755
- 極光推送檔案
相關文章
- iOS 訊息轉發機制Demo解析iOS
- iOS進階之訊息轉發機制iOS
- iOS探索 動態方法解析和訊息轉發機制iOS
- 理解 Android 訊息機制Android
- Android訊息機制HandlerAndroid
- android訊息機制—HandlerAndroid
- Android 之訊息機制Android
- 訊息機制篇——初識訊息與訊息佇列佇列
- iOS:利用訊息轉發機制實現多播委託iOS
- Rabbitmq可靠訊息投遞,訊息確認機制MQ
- Android非同步訊息機制Android非同步
- 重拾 ObjC 訊息機制OBJ
- flutter 訊息傳遞機制Flutter
- RabbitMQ 訊息確認機制MQ
- 簡析Windows訊息機制Windows
- Handler訊息傳遞機制
- Android訊息機制Handler用法Android
- Kafka 訊息儲存機制Kafka
- Android的Handler訊息機制 解析Android
- MFC學習(四) 訊息機制
- Android Handler 訊息機制詳述Android
- 深入理解Android訊息機制Android
- 深入理解windows 訊息機制Windows
- 【RocketMQ】訊息的刷盤機制MQ
- RabbitMQ訊息佇列(九):Publisher的訊息確認機制MQ佇列
- Android 訊息機制:Handler、MessageQueue 和 LooperAndroidOOP
- Handler訊息機制完全解析Handler解析
- 全面剖析Android訊息機制原始碼Android原始碼
- 深入淺出 Runtime(三):訊息機制
- Android Handler MessageQueue Looper 訊息機制原理AndroidOOP
- Android 訊息機制詳解(Android P)Android
- 由外到內——剖析Android訊息機制Android
- 基於TimeLine模型的訊息同步機制模型
- 06.Android之訊息機制問題Android
- Android進階;Handler訊息機制詳解Android
- JAVA訊息確認機制之ACK模式Java模式
- Android Handler訊息機制原始碼解讀Android原始碼
- Android-Handler訊息機制實現原理Android
- 原始碼分析:Android訊息處理機制原始碼Android