你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> iOS 消息機制

iOS 消息機制

編輯:關於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;  
    }  
}

二、遠程推送

閱讀參考鏈接。

參考鏈接

本地推送

  1. http://my.oschina.net/CarlHuang/blog/139104

遠程推送:

  1. http://blog.csdn.net/enuola/article/details/8627283
  2. http://www.cnblogs.com/yh-qfnu/p/3269768.html
  3. http://www.cocoachina.com/ios/20100401/900.html
  4. http://blog.csdn.net/dalehui/article/details/16807157
  5. http://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1
  6. http://www.raywenderlich.com/32963/apple-push-notification-services-in-ios-6-tutorial-part-2
  7. http://mobiforge.com/design-development/programming-apple-push-notification-services
  8. http://segmentfault.com/a/1190000000520755
  9. 極光推送文檔
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved