小编dha*_*123的帖子

目前仅支持在主线程上从 Swift/Objective-C 调用 Kotlin 挂起函数

我正在尝试删除用户的 fcm 令牌,然后注销。

但我不能这样做,因为我收到了错误'Calling Kotlin suspend functions from Swift/Objective-C is currently supported only on main thread'

似乎挂起函数会以某种方式挂起下一个块?

repo.deleteToken 方法:

 suspend fun deleteToken(token: String) {
        val userId = appService.currentUser!!.id
            realm.write {
                var user = query<UserInfo>("_id = $0", userId).first().find()
                if (user != null) {
                    user = findLatest(user)!!.also {
                        it.FCMToken.remove(token)
                    }
                    copyToRealm(user)
                }
        }
    }
Run Code Online (Sandbox Code Playgroud)

和 repo.logout:

suspend fun doLogout() {
        appService.currentUser?.logOut()
    }
Run Code Online (Sandbox Code Playgroud)

我的注销方法删除令牌并尝试注销:

func doLogout(){
        
        repo.deleteToken(token: myFCMToken){error in
            isLoginShown = true

            repo.doLogout(){error in
                
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

当我注销时:*** Terminating app …

realm swift kotlin-multiplatform kotlin-coroutines swiftui

5
推荐指数
2
解决办法
1929
查看次数