В настоящее время я работаю над интеграцией push-уведомлений в свое iOS-приложение SwiftUI и хочу реализовать функцию, позволяющую пользователям перенаправляться к определенным представлениям в приложении при нажатии на уведомление. Я слышал о глубоких ссылках и использовании ViewRouter в SwiftUI для целей навигации, но не совсем понимаю, как настроить его для push-уведомлений.
Любые идеи или примеры, демонстрирующие реализацию этой функции будет очень признателен. Спасибо!
Вот что я сделал:
Делегировать приложение:
`class AppDelegate: NSObject, UIApplicationDelegate, MessagingDelegate, UNUserNotificationCenterDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
application.registerForRemoteNotifications()
FirebaseApp.configure()
Messaging.messaging().delegate = self
UNUserNotificationCenter.current().delegate = self
registerForPushNotifications()
return true
}
func registerForPushNotifications() {
if #available(iOS 10.0, *) {
// For iOS 10 display notification (sent via APNS)
UNUserNotificationCenter.current().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
options: authOptions,
completionHandler: {_,_ in })
// For iOS 10 data message (sent via FCM)
Messaging.messaging().delegate = self
} else {
let settings: UIUserNotificationSettings =
UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
UIApplication.shared.registerUserNotificationSettings(settings)
}
UIApplication.shared.registerForRemoteNotifications()
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Messaging.messaging().apnsToken = deviceToken
}
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
if let fcm = Messaging.messaging().fcmToken {
Singleton.shared.storeString(value: fcm, in: .fcmToken)
// print("FCM", fcm)
}
}
}`
Менеджер уведомлений:
`@MainActor
class NotificationManager: ObservableObject{
@Published private(set) var hasPermission = false
init() {
Task{
await getAuthStatus()
}
}
func request() async{
do {
try await UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound])
await getAuthStatus()
} catch{
print(error)
}
}
func getAuthStatus() async {
let status = await UNUserNotificationCenter.current().notificationSettings()
switch status.authorizationStatus {
case .authorized, .ephemeral, .provisional:
hasPermission = true
default:
hasPermission = false
}
}
}`
Подробнее здесь: https://stackoverflow.com/questions/781 ... in-swiftui
Маршрутизация push-уведомлений с использованием глубоких ссылок в SwiftUI ⇐ IOS
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Невозможно открыть приложение для создания Jetpack с помощью глубоких ссылок.
Anonymous » » в форуме Android - 0 Ответы
- 18 Просмотры
-
Последнее сообщение Anonymous
-