FacebookSdk.sdkInitialize (Kontext) ist veraltet

101

Ich verwende facebook-android-sdk-4.19.0 in Android Studio und habe die Facebook-Kurzanleitung unter https://developers.facebook.com/docs/android/getting-started befolgt (Klicken Sie auf die Schaltfläche Schnellstart, um Melden Sie sich mit Ihrem eigenen Facebook-Konto an. In der Anleitung wird empfohlen, den folgenden Code zu kopieren und in das Snippet einzufügen, um App-Protokolle zu verfolgen

import com.facebook.FacebookSdk;
import com.facebook.appevents.AppEventsLogger;

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        FacebookSdk.sdkInitialize(getApplicationContext());
        AppEventsLogger.activateApp(this);
    }
}

Wenn ich jedoch den Code in Android Studio kopiere, scheinen alle Methoden von FacebookSdk.sdkInitialize () veraltet zu sein. Die Dokumentation hier https://developers.facebook.com/docs/reference/android/current/class/FacebookSdk/ sagt nichts darüber aus, welche Methode zum Initialisieren des SDK anstelle von sdkInitialize () verwendet werden soll. Welche Methode soll ich verwenden?

Ozan
quelle
1
Wenn Ihnen die Antwort geholfen hat, markieren Sie sie bitte als richtige Antwort. Wenn Sie immer noch das gleiche Problem haben, können wir die Suche fortsetzen.
Yupi

Antworten:

130

Aus der Dokumentation zum Aktualisieren des SDK:

Das Facebook SDK wird jetzt beim Start der Anwendung automatisch initialisiert. Wenn Sie das Facebook SDK im Hauptprozess verwenden und nach Abschluss der SDK-Initialisierung keinen Rückruf benötigen, können Sie jetzt Anrufe an FacebookSDK.sdkInitialize entfernen. Wenn Sie einen Rückruf benötigen, sollten Sie den Rückruf in Ihrem Code manuell aufrufen.

Siehe: https://developers.facebook.com/docs/android/upgrading-4x

AKTUALISIEREN

In SDK 4.22 die title, description, captionund imageBereich FBSDKShareLinkContentsind veraltet. Ziehen Sie in Betracht, sie aus der Verwendung zu entfernen.

Yupi
quelle
2
Verstanden, danke.
Ozan
1
Was ist mit dem Rückruf der automatischen Initialisierung?
Konstantin Konopko
8
Wie schafft es das FB SDK, sich selbst zu initialisieren, "on Application start"ohne etwas hinzufügen zu müssen Application.onCreate()?
Sébastien
5
Beantwortung meines eigenen Kommentars: Seit v4.19.0 wird die Facebook SDK-Initialisierung von einem ContentProvider durchgeführt, der im App-Manifest deklariert ist: github.com/facebook/facebook-android-sdk/commit/…
Sébastien
2
Wenn ich die Zeile sdkInitialize entferne, tritt bei einigen Benutzern immer noch die Ausnahme auf: "Der Facebook-SDK muss vor dem Aufruf von activableApp initialisiert werden", SDK-Version: 4.27.0, Android-Version 5.0
Diousk
13
FacebookSdk.sdkInitialize(getApplicationContext()); 

Diese Methode ist veraltet. Löschen Sie einfach diese Codezeile in Ihrer Klasse. Da wir laut dem neuesten Facebook das SDK jetzt nicht mehr manuell initialisieren müssen, wird es von selbst initialisiert.

VaibhavBhosale
quelle
4

Anstatt die veralteten Methoden aufzurufen, können AppEventsLogger.activateApp(Application)Sie sie in onCreate () Ihrer Anwendungsklasse aufrufen.

public class MyApplication extends Application{

    @Override
    public void onCreate() {
        super.onCreate();
        AppEventsLogger.activateApp(getApplication());
    }
}
Rakesh Yadav
quelle
1
Nach dieser public static void activateApp(Context context) ist veraltet. Es wird empfohlen, dies zu verwenden . Dafür habe ich ersetzt MainActivity.thismit getApplication().
Nikhil Wagh
2
MyApplication.thisist auch das gleiche ApplicationObjekt. Darf ich fragen, durch was es ersetzt werden muss getApplication()? Ich benutze einfach this(was auch das gleiche ist wie MyApplication.this) und es wird empfangen alsApplication
vida
1

Meine Anforderung bestand darin, autoInit beim Start der App zu deaktivieren und über die onCreate-Methode von Activity zu initialisieren. AutoInit vor dem Start der App führte dazu, dass meine Flatter-App einige Zeit brauchte, um bei langsamen Netzwerkverbindungen zu starten.

  1. Deaktivieren Sie AutoInit aus dem Manifest

    <meta-data android:name="com.facebook.sdk.AutoInitEnabled"
        android:value="false"/>
    
  2. Initialisieren Sie Fb sdk in der onCreate-Methode der Aktivität

    FacebookSdk.fullyInitialize();
    AppEventsLogger.activateApp(application);
    
Sahil Patel
quelle
0

FacebookSdk.sdkInitialize(getApplicationContext());

Diese Methode ist nicht erforderlich, wie das Facebook-Dokument sagt: Diese Funktion initialisiert das Facebook SDK und wird beim Start der App automatisch aufgerufen, wenn im AndroidManifest die richtigen Einträge aufgeführt sind, z. B. die Facebook-App-ID. Die automatische Ereignisprotokollierung von 'activApp' kann über die Manifesteinstellung 'com.facebook.sdk.AutoLogAppEventsEnabled' gesteuert werden.

Rahul Khatri
quelle