git: https://github.com/Timurandrweb/KotlinProject_7_FCM
Соответствующие файлы:
1) Kotlin (iosMain) — FirebasePushNotifierImpl.kt
Код: Выделить всё
internal class FirebasePushNotifierImpl : PushNotifier {
private val scope =
CoroutineScope(SupervisorJob() + Dispatchers.Main.immediate)
init {
scope.launch {
FirebaseBridge.initializeFirebase() // expected to call iOS code
}
}
// getToken, deleteToken, subscribe, etc.
}
Код: Выделить всё
language = Objective-C
package = firebasebridge
headers = FirebaseBridgeObjC.h
compilerOpts = -I${projectDir}/../../iosApp/iosApp
Код: Выделить всё
@objc public class FirebaseBridge: NSObject {
@objc public static func initializeFirebase() {
DispatchQueue.main.async {
if FirebaseApp.app() == nil {
FirebaseApp.configure()
}
UNUserNotificationCenter.current().delegate =
UIApplication.shared.delegate as? UNUserNotificationCenterDelegate
UIApplication.shared.registerForRemoteNotifications()
}
}
// getToken, deleteToken, subscribe, unsubscribe...
}
Код: Выделить всё
@interface FirebaseBridge : NSObject
+ (void)initializeFirebase;
+ (void)getToken:(FBTokenCallback)completion;
+ (void)deleteToken:(FBVoidCallback)completion;
+ (void)subscribeToTopic:(NSString*)topic;
+ (void)unsubscribeFromTopic:(NSString*)topic;
@end
Код: Выделить всё
FirebasePushNotifierImplФактическое поведение:
Нет журналов от FirebaseBridge, токен устройства не зарегистрирован. Похоже, мост Kotlin → Objective-C не вызывается. Сборка прошла успешно, ошибок компиляции нет.
https://github.com/Timurandrweb/KotlinProject_7_FCM
Подробнее здесь: https://stackoverflow.com/questions/798 ... om-iosmain
Мобильная версия