修复:fbsdk启动bug

This commit is contained in:
ivan 2026-04-14 21:57:40 +08:00
parent d1f51b9245
commit 59ab3b247a

View File

@ -1,14 +1,15 @@
package com.funymee.client_proxy_framework package com.funymee.client_proxy_framework
import android.app.ActivityManager import android.app.ActivityManager
import android.app.Application
import android.content.Context import android.content.Context
import com.facebook.appevents.AppEventsLogger import android.os.Handler
import android.os.Looper
import com.facebook.FacebookSdk
import io.flutter.embedding.engine.plugins.FlutterPlugin import io.flutter.embedding.engine.plugins.FlutterPlugin
import io.flutter.plugin.common.MethodCall import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel import io.flutter.plugin.common.MethodChannel
/** Facebook App Events在引擎侧注册固定 Channel,供 Dart 触发 activateApp。 */ /** Facebook App Events在引擎侧注册固定 Channel;等 [FacebookSdk] 初始化完成后再通知 Dart勿在就绪前调用 AppEventsLogger.activateApp。 */
class ClientProxyFrameworkPlugin : FlutterPlugin, MethodChannel.MethodCallHandler { class ClientProxyFrameworkPlugin : FlutterPlugin, MethodChannel.MethodCallHandler {
private var channel: MethodChannel? = null private var channel: MethodChannel? = null
private var deviceMemoryChannel: MethodChannel? = null private var deviceMemoryChannel: MethodChannel? = null
@ -54,16 +55,33 @@ class ClientProxyFrameworkPlugin : FlutterPlugin, MethodChannel.MethodCallHandle
override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) { override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
when (call.method) { when (call.method) {
"waitForFacebookSdkInit" -> { "waitForFacebookSdkInit" -> {
val ctx = applicationContext
if (ctx == null) {
result.error("NO_CONTEXT", "applicationContext null", null)
return
}
val mainHandler = Handler(Looper.getMainLooper())
try { try {
val ctx = applicationContext // SDK 18 无 addInitializedCallback用 sdkInitialize(..., InitializeCallback) 在就绪后回调
val app = ctx?.applicationContext as? Application //(已初始化时会立即回调)。勿在此处调用 AppEventsLogger.activateApp。
if (app != null) { @Suppress("DEPRECATION")
AppEventsLogger.activateApp(app) FacebookSdk.sdkInitialize(
} ctx.applicationContext,
result.success(true) object : FacebookSdk.InitializeCallback {
channel?.invokeMethod("onFacebookSdkInitialized", null) override fun onInitialized() {
mainHandler.post {
try {
channel?.invokeMethod("onFacebookSdkInitialized", null)
result.success(true)
} catch (e: Exception) {
result.error("FB_SDK_READY", e.message, null)
}
}
}
},
)
} catch (e: Exception) { } catch (e: Exception) {
result.error("FB_ACTIVATE_APP", e.message, null) result.error("FB_SDK_READY", e.message, null)
} }
} }
else -> result.notImplemented() else -> result.notImplemented()