私は位置ベースのプロジェクトをしようとしています。通知を受け取ったら、私は「はい」ボタンを押して、アプリケーションの場所のページに移動します。このプロセスを行うには、通知のタイトルを取得する必要がありますが、私はCore Locationのdidenterregionメソッドで通知を作成しています。通知アクションのためには、私はdidreceiveresponseメソッドを使うべきです。 didreceiveresponseメソッドのためにdidenterregionからの通知のタイトルをどのように取ることができますか?地域識別子を別のメソッドから取得していますか?
は、ここに私のコード
UNUserNotificationCenter.current().requestAuthorization(
options: [.alert,.sound,.badge],
completionHandler: { (didAllow,error) in
}
)
let answerYes = UNNotificationAction(identifier: "answerYes", title: "Evet", options: UNNotificationActionOptions.foreground)
let answerCancel = UNNotificationAction(identifier: "answerCancel", title: "İptal", options: UNNotificationActionOptions.foreground)
let category = UNNotificationCategory(identifier: "myCategory", actions: [answerYes,answerCancel], intentIdentifiers: [], options: [])
UNUserNotificationCenter.current().setNotificationCategories([category])
let topkapiLatitude: CLLocationDegrees = 41.013
let topkapiLongitude: CLLocationDegrees = 28.984
let topkapiCenter: CLLocationCoordinate2D = CLLocationCoordinate2DMake(topkapiLatitude, topkapiLongitude)
let topkapiRadius: CLLocationDistance = CLLocationDistance(100.0)
let topkapiIdentifier: String = "Topkapı Sarayı"
let topkapiRegion = CLCircularRegion(center: topkapiCenter, radius: topkapiRadius, identifier: topkapiIdentifier)
let yrbtnLatitude: CLLocationDegrees = 41.0081
let yrbtnLongitude: CLLocationDegrees = 28.9778
let yrbtnCenter: CLLocationCoordinate2D = CLLocationCoordinate2DMake(yrbtnLatitude, yrbtnLongitude)
let yrbtnRadius: CLLocationDistance = CLLocationDistance(100.0)
let yrbtnIdentifier: String = "Yerebatan Sarnıcı"
let yrbtnRegion = CLCircularRegion(center: yrbtnCenter, radius: yrbtnRadius, identifier: yrbtnIdentifier)
locationManager.distanceFilter = 10
locationManager.desiredAccuracy = kCLLocationAccuracyBest
topkapiRegion.notifyOnEntry = true
yrbtnRegion.notifyOnEntry = true
locationManager.delegate=self
UNUserNotificationCenter.current().delegate = self
locationManager.requestAlwaysAuthorization()
locationManager.startMonitoring(for: topkapiRegion)
locationManager.startMonitoring(for: yrbtnRegion)
locationManager.startUpdatingLocation()
return true
}
func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping() -> Void) {
if response.actionIdentifier == "answerYes" {
}
else {
}
}
func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {
let content = UNMutableNotificationContent()
content.title = region.identifier
content.subtitle = "You are at \(region.identifier) now"
content.body = "Do you want to learn history of this place?"
content.badge = 1
content.categoryIdentifier = "myCategory"
let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 2, repeats: false)
let request = UNNotificationRequest(identifier: "timerDone", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
}
1.で取得nototificationresponse)* property *これを使用して 'title'を抽出することができます2.わかりませんが、あなた自身が難しいと思っています...あなたは単純に良い場所にUNLocationNotificationTriggerを使ってLocationBased Notificationを作成することができます例は[here](https://code.tutsplus.com/tutorials/an-introduction-to-the-usernotifications-framework--cms-27250)を参照してください。 – Honey
これを行う前に試したことがありますが、通知を受け取ることができません。しかし、この例で私はもう一度お世話になります:) –