События приложения Flutter facebook: свойство lateinit anonymousId не было инициализировано
Я пытаюсь вызвать события приложения Facebook в своем проекте flutter. Я использую зависимость facebook_app_events: ^0.12.0 . метаданные также добавляются в файл манифеста.
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
void callFBEvent() async {
try {
var i = await facebookAppEvents.getAnonymousId();
await facebookAppEvents.setAdvertiserTracking(enabled: true);
await facebookAppEvents.logEvent(
name: "User_Selection_Screen", parameters: {
"User_Selection": "User_Selection",
});
print("facebook event success User_Selection_Screen");
}catch(e){
print(e);
}
}
Ошибка ниже
kotlin.UninitializedPropertyAccessException: lateinit property anonymousId has not been initialized
at id.oddbit.flutter.facebook_app_events.FacebookAppEventsPlugin.handleGetAnonymousId(FacebookAppEventsPlugin.kt:82)
at id.oddbit.flutter.facebook_app_events.FacebookAppEventsPlugin.onMethodCall(FacebookAppEventsPlugin.kt:55)
at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233)
at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:84)
at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:822)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:336)
at android.os.Looper.loop(Looper.java:174)
at android.app.ActivityThread.main(ActivityThread.java:7386)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)
3 ответа
В моем случае проблема заключалась в том, что я вставил метаданные под тегом активности, а не под тегом приложения.
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/>
Открываю проект в модуле андроид. Затем сначала очистите сборку проекта, а затем просто соберите и синхронизируйте Gradle в модуле Android. тогда вопрос был решен. Но я уже использовал pub get много времени до этого, но это не сработало. хорошо, моя проблема решена.
Таким образом, решение состояло в том, чтобы поставить:
<meta-data android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id"/>
<meta-data android:name="com.facebook.sdk.ClientToken"
android:value="@string/facebook_client_token"/>
в нужном месте они должны быть под тегом приложения, в первом диапазоне, поэтому не под приложением, а затем тегом активности прямо под тегом приложения в androidManifest, как на рисунке ниже!введите описание изображения здесь