2013-07-15 52 views
2

我們正在創建一個應用程序,提醒用戶有關某些任務。 用戶可以選擇收到按以下基準提醒:iOS如何設置應用程序提醒

一次,每日,每週,每週(在特定工作日),每兩週,每月一次

提醒應是應用程序中的自定義彈出窗口和/或應用程序關閉時的彈出窗口。我的問題是,設置這些提醒的最佳方式是什麼?

我正在考慮這樣做的方式是將其加載到手機的SQLite數據庫中,然後每次啓動應用程序時檢查提醒,如果提醒是,我們說每天一個,應用程序會自動設置下一個提醒。我不知道我將如何去做剩下的事情。

感謝

回答

5

我用NSLocalNotification

UILocalNotification *localNotification = [[UILocalNotification alloc] init]; 
if (localNotification == nil) 
    return; 
localNotification.fireDate = dateToRemindOn; 
localNotification.timeZone = [NSTimeZone defaultTimeZone]; 

// details 
localNotification.alertBody = @"Alert Message"; 
// Set the button title 
localNotification.alertAction = @"View"; 
localNotification.soundName = UILocalNotificationDefaultSoundName; 

// custom data for the notification to use later 
NSDictionary *infoDict = [NSDictionary dictionaryWithObject:reminderID forKey:@"remindID"]; 
localNotification.userInfo = infoDict; 

// Schedule notification 
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 

做到這一點在我的應用程序這將創建一個本地通知,你可以存儲你可能需要在用戶信息字典的任何信息,這將提供給你當它是收到或打開。

在您的AppDelegate中使用此方法來檢查應用程序是否從您的本地通知打開。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    // Handle launching from a notification 
    UILocalNotification *localNotification = 
    [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; 
    if (localNotification) { 
     //handle local notification 
    } 
} 

,並使用此方法在應用程序委託中,而應用程序是開放

- (void)application:(UIApplication *)app didReceiveLocalNotification:(UILocalNotification *)notif { 
    // Handle notification when app is running 
} 
+0

由於收到當地通知時趕上,將這個通知顯示,如果應用程序是完全封閉的(甚至沒有暫停)?或者應用程序需要打開?如果用戶按下通知上的按鈕,我需要應用程序才能在應用程序內部打開並運行特定的方法。 – JakesRassie

+0

是的,他們將收到通知,如果應用程序關閉,並且如果他們在應用程序關閉時打開該通知,那麼您將在didFinishLaunching方法中檢查它。如果在應用程序運行時收到通知,則會調用didReceiveRemoteNotification方法,您可以根據需要處理它。 – RGullotti

+0

完美,感謝您的幫助。 – JakesRassie

0

你可以設置一個NSLocalNotification和處理應用程序的狀態:當你在應用程序中,你可以把你的自定義視圖,當你的應用程序之外,你會收到標準警報。