Skip to content

Commit b38dc57

Browse files
authored
Merge pull request #13 from skiptools/fcmtoken
Set fcmToken to initial token on Android
2 parents 92cb15d + 1112ea1 commit b38dc57

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

Sources/SkipFirebaseMessaging/SkipFirebaseMessaging.swift

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)