iPhone開發之本地通知

來源:互聯網
上載者:User

本地通知,local notification,用於基於時間行為的通知,比如有關日曆或者todo列表的小應用。另外,應用如果在後台執行,iOS允許它在受限的時間內運行,它也會發現本地通知有用。比如,一個應用,在後台運行,嚮應用的伺服器端擷取訊息,當訊息到達時,比如下載更新版本的提示訊息,通過本地通知機制通知使用者。

本地通知是UILocalNotification的執行個體,主要有三類屬性:

scheduled time,時間周期,用來指定iOS系統發送通知的日期和時間;
notification type,通知類型,包括警告資訊、動作按鈕的標題、應用表徵圖上的badge(數字標記)和播放的聲音;
自訂資料,本地通知可以包含一個dictionary類型的本機資料。
對本地通知的數量限制,iOS最多允許最近本地通知數量是64個,超過限制的本地通知將被iOS忽略。

如果就寫個簡單的定時提醒,是很簡單的,比如這樣:


 

樣本寫的很簡單,啟動應用後,就發出一個定時通知,10秒後啟動。這時按Home鍵退出,一會兒就會提示的提示資訊。如果應用不退出則無效。

代碼如下:

UILocalNotification *notification=[[UILocalNotification alloc] init];
if (notification!=nil) {
    NSLog(@">> support local notification");
    NSDate *now=[NSDate new];
    notification.fireDate=[now addTimeInterval:10];
    notification.timeZone=[NSTimeZone defaultTimeZone];
    notification.alertBody=@"該去吃晚飯了!";
    [[UIApplication sharedApplication]   scheduleLocalNotification:notification];

 

更詳細的代碼見官方文檔:《Scheduling, Registering, and Handling Notifications》,可以設定比如聲音,比如使用者定義資料等。

設定更多本地通知的資訊:
 

設定icon上數字。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {   
    // Override point for customization after application launch.
    /////////////
  application.applicationIconBadgeNumber = 0;
    // Add the view controller’s view to the window and display.
    [self.window addSubview:viewController.view];
    [self.window makeKeyAndVisible];

    return YES;
}

添加通知時間,通知類型,取消通知
#pragma mark –
#pragma mark onChageValue
-(IBAction)onChangeValue:(id)sender
{
    UISwitch *switch1=(UISwitch *)sender;
    if (switch1.on) {
        UILocalNotification *notification=[[UILocalNotification alloc] init];
        NSDate *now1=[NSDate date]; 
        notification.timeZone=[NSTimeZone defaultTimeZone];
        notification.repeatInterval=NSDayCalendarUnit;
        notification.applicationIconBadgeNumber = 1;
        notification.alertAction = NSLocalizedString(@"顯示", nil);
        switch (switch1.tag) {
            case 0:
            {
                notification.fireDate=[now1 dateByAddingTimeInterval:10];
                notification.alertBody=self.myLable1.text;
            }
                break;
            case 1:
            {
                notification.fireDate=[now1 dateByAddingTimeInterval:20];
                notification.alertBody=self.myLable2.text;
            }
                break;
            case 2:
            {
                notification.fireDate=[now1 dateByAddingTimeInterval:30];
                notification.alertBody=self.myLable3.text;
            }
                break;
            default:
                break;
        }
        [notification setSoundName:UILocalNotificationDefaultSoundName];
        NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
                              [NSString stringWithFormat:@"%d",switch1.tag], @"key1", nil];
        [notification setUserInfo:dict];
        [[UIApplication sharedApplication]   scheduleLocalNotification:notification];
    }else {
        NSArray *myArray=[[UIApplication sharedApplication] scheduledLocalNotifications];
        for (int i=0; i<[myArray count]; i++) {
            UILocalNotification    *myUILocalNotification=[myArray objectAtIndex:i];
            if ([[[myUILocalNotification userInfo] objectForKey:@"key1"] intValue]==switch1.tag) {
                [[UIApplication sharedApplication] cancelLocalNotification:myUILocalNotification];
            }
        }
    }
}



摘自 Evolution
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.