IOS 本地通知 UILocalNotification

來源:互聯網
上載者:User

標籤:ios 本地通知 uilocalnotification

1、增加一個本地推送//設定20秒之後 NSDate *date = [NSDate dateWithTimeIntervalSinceNow:20];    //chuagjian一個本地推送    UILocalNotification *noti = [[[UILocalNotification alloc] init] autorelease];    if (noti) {        //設定推送時間        noti.fireDate = date;        //設定時區        noti.timeZone = [NSTimeZone defaultTimeZone];        //設定重複間隔        noti.repeatInterval = NSWeekCalendarUnit;        //推送聲音        noti.soundName = UILocalNotificationDefaultSoundName;        //內容        noti.alertBody = @"推送內容";        //顯示在icon上的紅色圈中的數子        noti.applicationIconBadgeNumber = 1;        //設定userinfo 方便在之後需要撤銷的時候使用        NSDictionary *infoDic = [NSDictionary dictionaryWithObject:@"name" forKey:@"key"];        noti.userInfo = infoDic;        //添加推送到uiapplication                UIApplication *app = [UIApplication sharedApplication];        [app scheduleLocalNotification:noti];      }2、程式運行時接收到本地推送訊息- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification{UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"接收到本地提醒 in app"message:notification.alertBody   delegate:nil  cancelButtonTitle:@"確定"  otherButtonTitles:nil];[alert show];//這裡,你就可以通過notification的useinfo,幹一些你想做的事情了application.applicationIconBadgeNumber -= 1;}3、取消一個本地推送UIApplication *app = [UIApplication sharedApplication];    //擷取本地推送數組    NSArray *localArr = [app scheduledLocalNotifications];        //聲明本地通知對象    UILocalNotification *localNoti;        if (localArr) {        for (UILocalNotification *noti in localArr) {            NSDictionary *dict = noti.userInfo;            if (dict) {                NSString *inKey = [dict objectForKey:@"key"];                if ([inKey isEqualToString:key]) {                    if (localNoti){                        [localNoti release];                        localNoti = nil;                    }                    localNoti = [noti retain];                    break;                }            }        }                //判斷是否找到已經存在的相同key的推送        if (!localNoti) {            //不存在 初始化            localNoti = [[UILocalNotification alloc] init];        }                if (localNoti && !state) {            //不推送 取消推送            [app cancelLocalNotification:localNoti];            [localNoti release];            return;        }}




當有電話進來或者鎖屏,這時你的應用程會掛起,在這時,UIApplicationDelegate委託會收到通知,調用 applicationWillResignActive 方法,你可以重寫這個方法,做掛起前的工作,比如關閉網路,儲存資料。

[java] view plaincopyprint?

- (void)applicationWillResignActive:(UIApplication*)application{  /*添加你自己的掛起前準備代碼*/  }




當你的程式被掛起後他不會在後台運行。
二、複原
當程式複原時,另一個名為 applicationDidBecomeActive 委託方法會被調用,在此你可以通過之前掛起前儲存的資料來恢複你的應用程式:

[java] view plaincopyprint?

- (void)applicationDidBecomeActive:(UIApplication*)application{  /*添加你的恢複代碼*/  }



注意:應用程式在啟動時,在調用了 applicationDidFinishLaunching 方法之後也會調用 applicationDidBecomeActive 方法,所以你要確保你的代碼能夠分清複原與啟動,避免出現邏輯上的bug。
三、終止
當使用者按下按鈕,或者關機,程式都會被終止。當一個程式將要正常終止時會調用 applicationWillTerminate 方法。但是如果長主按鈕強制退出,則不會調用該方法。這個方法該執行剩下的清理工作,比如所有的串連都能正常關閉,並在程式退出前執行任何其他的必要的工作:

[java] view plaincopyprint?

- (void)applicationWillTerminate:(UIApplication*)application{  /*在這裡添加退出前的清理代碼以及其他工作代碼*/  }


本文出自 “小劉_Blog” 部落格,請務必保留此出處http://liuyafang.blog.51cto.com/8837978/1566444

IOS 本地通知 UILocalNotification

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.