私は、関数を作成しました。これは、あなたが望むときに、特定の時間にあなたの機能を呼び出すことになります。時計アプリを作成しているので、ユーザーがアラームを作成したときにローカル通知をトリガーする必要があります。また、通知センターの委任方法では、応答を処理し、必要な方法を呼び出すことができます。
class LocalNotificationMethod : NSObject {
static let notificationInstance = LocalNotificationMethod()
let requestIdentifier = "SampleRequest" //identifier is to cancel the notification request
internal func scheduleLocalNotification(titleOfNotification:String, subtitleOfNotification:String, messageOfNotification:String, soundOfNotification:String, dateOfNotification:String) {
if #available(iOS 10.0, *) {
let formatter = DateFormatter()
formatter.dateFormat = "yyyy-MM-dd hh:mm a"
let date3 = formatter.date(from: dateOfNotification)
let content = UNMutableNotificationContent()
content.body = NSString.localizedUserNotificationString(forKey: titleOfNotification, arguments: nil)
content.sound = soundOfNotification.characters.count > 0 ? UNNotificationSound.init(named: soundOfNotification + ".mp3") : UNNotificationSound.default()
let trigger = UNCalendarNotificationTrigger.init(dateMatching: NSCalendar.current.dateComponents([.day, .month, .year, .hour, .minute], from: date3!), repeats: false)
let request = UNNotificationRequest(identifier:requestIdentifier, content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request){(error) in
if (error != nil){
print(error?.localizedDescription)
} else {
print("Successfully Done")
}
}
} else {
// Fallback on earlier versions
}
}
}
そしてAppDelegate方法で: - ユーザーがあなたの通知やたびに通知があなたが行ってまで何をしたいあなた次第present.Isになりますをクリックするたびに、処理することができます。
// MARK: - 通知の委任
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) {
print("Tapped in notification")
}
//This is key callback to present notification while the app is in foreground
@available(iOS 10.0, *)
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
print("Notification being triggered")
//You can either present alert ,sound or increase badge while the app is in foreground too with ios 10
//to distinguish between notifications
if notification.request.identifier == "SampleRequest" {
completionHandler([.alert,.sound,.badge])
}
}
あなたはあなたのコンテンツにローカル通知をスケジュールすることができます。 – KKRocks
@KKRocksおそらく私は私の質問で十分に明確ではなかった。私が見ている問題は、通知を表示しているときに現地の通知に表示されるコンテンツを取得したいということです。したがって、私の場合、ユーザーは午前7時の通知をスケジュールするかもしれません。その時の通知の内容を取得したいのですが。 –
はい、プッシュ通知は、天気予報を表示する場合に最適です。 – KKRocks