以為指定時間本地通知 (Local Notification in Particular Time)實作有難度,不過實際瞭解之後,哇哈~原來那麼簡單!
此程式只能在APP進入背景執行或關閉APP時,才會出現本地通知喔~
在AppDelegate.m實作以下方法:
/**
Theme: Local Notification in Particular Time
IDE: Xcode 5
Language: Objective C
Date: 102/12/18
Author: HappyMan
Blog: https://cg2010studio.wordpress.com/
*/
- (void)applicationDidEnterBackground:(UIApplication *)application
{
NSDate *alertTime = [[NSDate date]
dateByAddingTimeInterval:7];
NSDate *alertTime2 = [[NSDate date]
dateByAddingTimeInterval:17];
NSCalendar *cal = [NSCalendar currentCalendar];
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:25];
[comps setMonth:12];
[comps setYear:2013];
[comps setHour:13];
[comps setMinute:14];
NSDate *alertTime3 = [cal dateFromComponents:comps];
NSLog(@"now time: %@", [NSDate date]);
NSLog(@"alertTime: %@", alertTime);
NSLog(@"alertTime2: %@", alertTime2);
NSLog(@"alertTime3: %@", alertTime3);
[self addNewSchedult:alertTime];
[self addNewSchedult:alertTime2];
[self addNewSchedult:alertTime3];
}
- (void)addNewSchedult:(NSDate *)date {
UIApplication* app = [UIApplication sharedApplication];
UILocalNotification* notifyAlarm = [[UILocalNotification alloc] init];
if (notifyAlarm) {
notifyAlarm.fireDate = date;
notifyAlarm.timeZone = [NSTimeZone defaultTimeZone];
notifyAlarm.repeatInterval = 0;
notifyAlarm.soundName = @"";
notifyAlarm.alertBody = [NSString stringWithFormat: @"Be happy ^_^\n%@", date];
[app scheduleLocalNotification:notifyAlarm];
}
}
執行結果就如頁首那張圖,此外它還會發出聲響呢!
now time: 2013-12-18 15:56:35 +0000
alertTime: 2013-12-18 15:56:42 +0000
alertTime2: 2013-12-18 15:56:52 +0000
alertTime3: 2013-12-25 05:14:00 +0000
總共設定三次通知,前兩次於7秒和17秒出現,第三次設定在今年浪漫的聖誕節,在一三一四這一刻出現~>//<~
接著來試驗遠端通知,來給使用者驚喜!
註:如果程式設定每隔一分鐘/一天區域推播一次,而沒有設定推播何時失效,那麼往後只能刪除整個APP才能停止不斷推播喔!因為我設定過隔一分鐘就區域推播一次,APP進入背景或APP從背景刪除都無法停止推播,只好刪了整個APP:P我弟才停止抱怨⋯⋯
參考:[iOS Dev] UILocalNotification in particular time – 指定時間本地通知。


Comments on: "[iOS] 指定時間本地通知 (Local Notification in Particular Time)" (2)
[…] 原本想使用區域推播(Local Notification)來提醒使用者,遇到需求只要震動而不要有介面顯示,可以怎麼做呢?原來只要開背景模式(Required background modes)的「App plays audio or streams audio/video using AirPlay」,即可在偵測到Beacon同時震動! […]
讚讚
[…] 區域通知的做法已經在指定時間本地通知 (Local Notification in Particular Time),它的行為其實有兩種,一種是當APP為背景執行時出現訊息,另一種則是APP在前景執行時跳出提示。 […]
讚讚