FacebookSdk.sdkInitialize (Context) è deprecato


102

Sto usando facebook-android-sdk-4.19.0 in Android Studio e ho seguito la guida rapida di Facebook su https://developers.facebook.com/docs/android/getting-started (fare clic sul pulsante Quick Start per accedi con il tuo account facebook). Nella guida, viene detto di copiare e incollare il seguente codice nello snippet per tenere traccia dei log delle app

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);
    }
}

Tuttavia, quando ho copiato il codice incollato in Android Studio, sembra che tutti i metodi FacebookSdk.sdkInitialize () siano deprecati. La documentazione qui https://developers.facebook.com/docs/reference/android/current/class/FacebookSdk/ non dice nulla su quale metodo utilizzare per inizializzare sdk invece di sdkInitialize (). Quale metodo dovrei usare?


1
Se la risposta ti ha aiutato, ti preghiamo di contrassegnarla come risposta corretta o se hai ancora lo stesso problema, possiamo continuare la ricerca.
Yupi

Risposte:


133

Dalla documentazione sull'aggiornamento dell'SDK:

L'SDK di Facebook è ora inizializzato automaticamente all'avvio dell'applicazione. Se stai utilizzando l'SDK di Facebook nel processo principale e non hai bisogno di una richiamata al completamento dell'inizializzazione dell'SDK, ora puoi rimuovere le chiamate a FacebookSDK.sdkInitialize. Se è necessaria una richiamata, è necessario richiamare manualmente la richiamata nel codice.

Fare riferimento a: https://developers.facebook.com/docs/android/upgrading-4x

AGGIORNARE

Nel SDK 4.22 il title, description, captione imagecampo FBSDKShareLinkContentsono deprecati. Considera l'idea di rimuoverli dall'utilizzo.


1
E la richiamata dell'inizializzazione automatica?
Konstantin Konopko

8
Come fa FB SDK ad inizializzarsi "on Application start"senza la necessità di aggiungere nulla Application.onCreate()??
Sébastien

5
Rispondendo al mio commento: dalla v4.19.0, l'inizializzazione dell'SDK di Facebook viene eseguita da un ContentProvider, dichiarato nel manifest dell'app: github.com/facebook/facebook-android-sdk/commit/…
Sébastien

Grazie Sébastien, passo molto tempo, per capire dove si chiama sdkInitialize ()
Vahe Gharibyan

2
Se rimuovo la riga sdkInitialize, alcuni utenti incontrano ancora l'eccezione: "L'sdk di Facebook deve essere inizializzato prima di chiamare Activation", versione sdk: 4.27.0, versione Android 5.0
diousk

13
FacebookSdk.sdkInitialize(getApplicationContext()); 

Questo metodo è deprecato, quindi elimina semplicemente questa riga di codice nella tua classe. perché secondo l'ultimo Facebook ora non abbiamo bisogno di inizializzare manualmente l'SDK, viene inizializzato da solo.


4

Quindi, invece di chiamare i metodi deprecati, puoi chiamare AppEventsLogger.activateApp(Application)all'interno di onCreate () della classe dell'applicazione

public class MyApplication extends Application{

    @Override
    public void onCreate() {
        super.onCreate();
        AppEventsLogger.activateApp(getApplication());
    }
}

1
Secondo questo public static void activateApp(Context context) è deprecato. Si suggerisce di utilizzare questo . Per quello ho sostituito MainActivity.thiscon getApplication().
Nikhil Wagh

2
MyApplication.thisè anche lo stesso Applicationoggetto. Posso chiederti qual è la necessità di sostituirlo getApplication()? Uso semplicemente this(che è anche lo stesso di MyApplication.this) e viene ricevuto comeApplication
vida

1

Il mio requisito era disabilitare autoInit all'avvio dell'app e inizializzarlo dal metodo onCreate di Activity. AutoInit prima dell'avvio dell'app faceva sì che la mia app flutter impiegasse tempo per avviarsi su connessioni di rete lente.

  1. Disabilita AutoInit da manifest

    <meta-data android:name="com.facebook.sdk.AutoInitEnabled"
        android:value="false"/>
    
  2. Inizializza Fb sdk nel metodo onCreate dell'attività

    FacebookSdk.fullyInitialize();
    AppEventsLogger.activateApp(application);
    

1

FacebookSdk.sdkInitialize(getApplicationContext());

Non è necessario questo metodo come dice il documento di Facebook: questa funzione inizializza l'SDK di Facebook viene chiamata automaticamente all'avvio dell'app se le voci corrette sono elencate nel AndroidManifest, come l'ID dell'app Facebook. La registrazione automatica degli eventi da "activationApp" può essere controllata tramite l'impostazione del manifesto "com.facebook.sdk.AutoLogAppEventsEnabled".

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.