IOS-Benachrichtigung, wie man die Benachrichtigungsnutzlast beim Tippen auf die Benachrichtigung im Flattern abfängtIOS

Programmierung für iOS
Guest
 IOS-Benachrichtigung, wie man die Benachrichtigungsnutzlast beim Tippen auf die Benachrichtigung im Flattern abfängt

Post by Guest »

Meine Anwendung sieht wie folgt aus.
  • Backend sendet Benachrichtigungen an iOS mithilfe des Node-APN-Pakets (direkt mithilfe von APN)
  • APN-Toke wird mit Firebase abgerufen.
Im Backend-Server:
A. hat FCM verwendet, um Benachrichtigungen für Android und APN zu senden IOS. Android funktioniert in allen Fällen einwandfrei.
B. Verwendeter Knoten-APN Für APN iOS Alert Push: Ich kann die Nutzlast nicht extrahieren. (Beim Tippen auf die Benachrichtigung möchte ich je nach Nutzlast einen bestimmten Bildschirm öffnen.)
Code zum Senden der Benachrichtigung:
Knotenservercode:

Code: Select all

var apnProvider = new apn.Provider(apnOptions);
var note = new apn.Notification();
//Set contents for note here
…

apnProvider
.send(note, token obtained from FirebaseMessaging.instance.getAPNSToken())
Unten ist der letzte wichtige Kontinent aufgeführt.

Code: Select all

{
encoding: 'utf8',
payload: {
messageFrom: 'Health',
params: {
title: 'Health',
body: 'Hello, You have a request. Kindly check.',
notification_type: 18,
appointment_id: "610cc37686000662ad14c",
send_time_in_ms: 1736510662242
}
},
compiled: false,
expiry: 1736514262,
priority: 10,
topic: ‘mytopic,
pushType: 'alert'
}
Die Benachrichtigung wird gesendet und in der Benachrichtigungsleiste unter IOS angezeigt. Wenn ich jedoch darauf klicke, möchte ich Parameter aus dem Benachrichtigungstext extrahieren und abhängig davon zu einem speziellen Bildschirm navigieren. Derzeit öffnet es nur die App und geht zum Startbildschirm.
Wie kann ich Parameter extrahieren?
unten ist mein AppDelegates.swift im Flutter-Projekt:

Code: Select all

    @main
@objc class AppDelegate: FlutterAppDelegate, PKPushRegistryDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
// This is required to make any communication available in the action isolate.
FlutterLocalNotificationsPlugin.setPluginRegistrantCallback { (registry) in
GeneratedPluginRegistrant.register(with: registry)
}

// Added as per documentation of flutter local notification package
if #available(iOS 10.0, *) {
UNUserNotificationCenter.current().delegate = self as? UNUserNotificationCenterDelegate
}

GeneratedPluginRegistrant.register(with: self)

//Setup VOIP (flutter_callkit_incomming)
let mainQueue = DispatchQueue.main
let voipRegistry: PKPushRegistry = PKPushRegistry(queue: mainQueue)
voipRegistry.delegate = self
voipRegistry.desiredPushTypes = [PKPushType.voIP]
print("didFinishLaunchingWithOptions")

return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}

// As per flutter_callkit_incomming Start ///////////////////
// Handle updated push credentials
func pushRegistry(_ registry: PKPushRegistry, didUpdate credentials: PKPushCredentials, for type: PKPushType) {
print(credentials.token)
let deviceToken = credentials.token.map { String(format: "%02x", $0) }.joined()
print(deviceToken)
//Save deviceToken to your server
SwiftFlutterCallkitIncomingPlugin.sharedInstance?.setDevicePushTokenVoIP(deviceToken)
}

func pushRegistry(_ registry: PKPushRegistry, didInvalidatePushTokenFor type: PKPushType) {
print("didInvalidatePushTokenFor")
SwiftFlutterCallkitIncomingPlugin.sharedInstance?.setDevicePushTokenVoIP("")
}
...

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post