@@ -36,24 +36,29 @@ public final class Messaging: Consumer<Intent>, KotlinConverting<FirebaseMessagi
3636 }
3737
3838 public static func messaging( ) -> Messaging {
39+ var isFirstAccess = false
3940 synchronized ( sharedLock) {
4041 if shared == nil {
42+ isFirstAccess = true
4143 shared = Messaging ( messaging: FirebaseMessaging . getInstance ( ) )
4244 }
4345 }
46+ if isFirstAccess {
47+ Task { @MainActor in
48+ do {
49+ shared!. fcmToken = await shared!. token ( )
50+ } catch {
51+ android. util. Log. e ( " SkipFirebaseMessaging " , " await token() error " , error as? Throwable )
52+ }
53+ }
54+ }
4455 return shared!
4556 }
4657
4758 public var delegate : ( any MessagingDelegate ) ? {
4859 didSet {
49- if let delegate {
50- Task { @MainActor in
51- do {
52- delegate. messaging ( self , didReceiveRegistrationToken: await token ( ) )
53- } catch {
54- android. util. Log. e ( " SkipFirebaseMessaging " , " didReceiveRegistrationToken error " , error as? Throwable )
55- }
56- }
60+ if let delegate, let token = fcmToken {
61+ delegate. messaging ( self , didReceiveRegistrationToken: token)
5762 }
5863 }
5964 }
@@ -104,7 +109,11 @@ public final class Messaging: Consumer<Intent>, KotlinConverting<FirebaseMessagi
104109 set { messaging. isAutoInitEnabled = newValue }
105110 }
106111
107- public internal( set) var fcmToken : String ?
112+ public internal( set) var fcmToken : String ? {
113+ didSet {
114+ delegate? . messaging ( self , didReceiveRegistrationToken: fcmToken)
115+ }
116+ }
108117
109118 public func token( ) async throws -> String {
110119 messaging. token. await ( )
@@ -202,7 +211,6 @@ public class MessagingService : FirebaseMessagingService {
202211 super. onNewToken ( token)
203212 let messaging = Messaging . messaging ( )
204213 messaging. fcmToken = token
205- messaging. delegate? . messaging ( messaging, didReceiveRegistrationToken: token)
206214 }
207215
208216 public override func onSendError( msgId: String , exception: Exception ) {
0 commit comments