我正在開發一個iOS應用程序,並且我必須獲取本地通知,但是在應用程序狀態爲非活動狀態的情況下。當應用程序處於後臺狀態時,我成功地收到通知。 那麼,當應用程序處於非活動狀態時,是否可以獲取本地通知? 或者,也許這隻有通過使用推送通知纔有可能?當應用程序的狀態處於非活動狀態時是否可以獲取本地通知
問候, 阿爾緬
我正在開發一個iOS應用程序,並且我必須獲取本地通知,但是在應用程序狀態爲非活動狀態的情況下。當應用程序處於後臺狀態時,我成功地收到通知。 那麼,當應用程序處於非活動狀態時,是否可以獲取本地通知? 或者,也許這隻有通過使用推送通知纔有可能?當應用程序的狀態處於非活動狀態時是否可以獲取本地通知
問候, 阿爾緬
你需要到當地的響應通知在兩個地方在你的應用程序代理:
- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
- (void) application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
第一種是當你的應用程序沒有運行 - 使用launchOptions
參數檢查您的應用是否因本地通知而啓動。
第二個是當你的應用程序當前正在運行(活動或不活動)。您可以通過檢查application:didReceiveLocalNotification:
方法中的NSApplication的applicationState
屬性來檢查應用程序是否處於非活動狀態。
- (void)sendNotification
{
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
// notification.repeatInterval = NSDayCalendarUnit;
localNotification.fireDate = vwPicker.date;
localNotification.alertBody = txtAlarmTitle.text;
localNotification.timeZone = [NSTimeZone defaultTimeZone];
localNotification.userInfo = @{@"Title": txtAlarmTitle.text};
localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication] applicationIconBadgeNumber] + 1;
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
[self handleNotification:notification application:application];
}
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
UILocalNotification *localNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey];
if (localNotification)
[self handleNotification:localNotification application:application];
return YES;
}
-(void)handleNotification: (UILocalNotification *)notification application:(UIApplication *)application
{
NSString *title = [notification.userInfo objectForKey:@"Title"];
[[[UIAlertView alloc]initWithTitle:@"Smart Alarm" message:title delegate:self cancelButtonTitle:@"Answer the Teaser" otherButtonTitles: nil] show];
application.applicationIconBadgeNumber = 0;
}