2017-02-27 69 views
0

在我的應用程序中,用戶將設置一個時間。那時我需要每天向他們發送通知,並附上新創建的約會次數。例如,假設在「01-03-2017」上有3個約會。因此,在那一天,在選定的時間,用戶應該收到一個通知,提及「您有3個新的約會」。新添加的約會將保存在本地領域數據庫中。Swift - 每日本地通知事件

其實我要做的就是每天用戶提到的時間,應該運行一段代碼並檢查數據庫中是否有新約會。如果需要,請發出本地通知。即使應用程序是關閉這應該工作。我看到,在Android中,我們可以使用警報管理器來完成此操作。但在迅速,我沒有找到一個方法來做到這一點。

我不是swift的專家。所以,如果你能給我一個解釋的解決方案,那麼很感激。感謝您的時間。

回答

0

您將無法在所需的時間運行代碼,因爲iOS阻止執行此操作。

雖然,如果領域數據庫更新,這意味着應用程序正在運行在某個點添加新的約會。

遇到這樣的情況,你可以有類似以下內容創建一個本地通知

func createLocalNotification(atDate date: DateComponents, appointmentCount: Int) { 
    var content = UNMutableNotificationContent() 

    content.title "You have \(appointmentCount) appointment(s) today" 
    content.badge: appointmentCount 

    let trigger = UNCalendarNotificationTrigger(dateMatching: date, repeats: false) 
    let notificationRequest = UNNotificationRequest(identifier: "notification-request-\(date.day!)-\(date.month!)-\(date.year!)", content: content, trigger: trigger) 

    UNUserNotificationCenter.current().add(notificationRequest) 
} 
+0

謝謝大家的響應函數。這意味着我們必須爲特徵日期安排通知嗎?我對麼? –

+0

是的。當約會進入時(例如在保存到域後),您可以調用此方法,在想要通知用戶他有約會時,用日,月,年,小時和分鐘配置一個DateComponents對象。 – tomahh

+0

由於該請求使用包含日期,月份和年份的標識符進行標記,因此同一日期**的任何進一步調用**將覆蓋先前添加的請求(請參閱[文檔](https://developer.apple.com/) reference/usernotifications/unnotificationrequest/1649634-identifier)) – tomahh