FacebookSdk.sdkInitialize (Context) jest przestarzały


102

Używam facebook-android-sdk-4.19.0 w Android Studio i postępowałem zgodnie z przewodnikiem szybkiego startu na Facebooku pod adresem https://developers.facebook.com/docs/android/getting-started (Kliknij przycisk Szybki start, aby zaloguj się za pomocą własnego konta na Facebooku). W przewodniku jest napisane, aby skopiować i wkleić następujący kod do fragmentu kodu, aby śledzić dzienniki aplikacji

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

Jednak po skopiowaniu i wklejeniu kodu w Android Studio okazuje się, że wszystkie metody FacebookSdk.sdkInitialize () są przestarzałe. Dokumentacja tutaj https://developers.facebook.com/docs/reference/android/current/class/FacebookSdk/ nie mówi nic o tym, jakiej metody użyć do zainicjowania sdk zamiast sdkInitialize (). Jakiej metody mam użyć?


1
Jeśli odpowiedź Ci pomogła, zaznacz ją jako poprawną lub jeśli nadal masz ten sam problem, możemy kontynuować wyszukiwanie.
Yupi

Odpowiedzi:


133

Z dokumentacji dotyczącej aktualizacji SDK:

Facebook SDK jest teraz automatycznie inicjowany podczas uruchamiania aplikacji. Jeśli korzystasz z Facebook SDK w głównym procesie i nie potrzebujesz wywołania zwrotnego po zakończeniu inicjalizacji SDK, możesz teraz usunąć wywołania do FacebookSDK.sdkInitialize. Jeśli potrzebujesz wywołania zwrotnego, powinieneś ręcznie wywołać funkcję zwrotną w swoim kodzie.

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

AKTUALIZACJA

W SDK 4.22 title, description, captioni imagepola FBSDKShareLinkContentsą przestarzałe. Rozważ usunięcie ich z użytku.


1
A co z wywołaniem zwrotnym automatycznej inicjalizacji?
Konstantin Konopko

8
W jaki sposób FB SDK udaje się zainicjalizować "on Application start"bez potrzeby dodawania czegokolwiek Application.onCreate()?
Sébastien

5
Odpowiadając na mój własny komentarz: od wersji 4.19.0 inicjalizacja Facebook SDK jest wykonywana przez dostawcę treści, zadeklarowanego w manifeście aplikacji: github.com/facebook/facebook-android-sdk/commit/…
Sébastien

Dzięki Sébastienowi, spędziłem dużo czasu, aby dowiedzieć się, gdzie nazywa się sdkInitialize ()
Vahe Gharibyan

2
Jeśli usunę wiersz sdkInitialize, niektórzy użytkownicy nadal spotykają się z wyjątkiem: „Przed wywołaniem aktywacji aplikacji ActivPix należy zainicjować zestaw SDK Facebooka”, wersja sdk: 4.27.0, Android wersja 5.0
diousk

13
FacebookSdk.sdkInitialize(getApplicationContext()); 

Ta metoda jest przestarzała, więc po prostu usuń ten wiersz kodu ze swojej klasy. ponieważ zgodnie z najnowszym Facebookiem nie musimy teraz ręcznie inicjować SDK, jest on inicjalizowany samodzielnie.


4

Więc zamiast wywoływać przestarzałe metody, możesz wywołać AppEventsLogger.activateApp(Application)metodę onCreate () klasy aplikacji

public class MyApplication extends Application{

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

1
Zgodnie z tym public static void activateApp(Context context) jest przestarzałe. Sugeruje użycie tego . Za to otrzymuje MainActivity.thissię getApplication().
Nikhil Wagh

2
MyApplication.thisjest również tym samym Applicationobiektem. Mogę zapytać, jaka jest potrzeba zastąpienia go getApplication()? Po prostu używam this(co jest również tym samym co MyApplication.this) i otrzymałem jakoApplication
vida

1

Moim wymaganiem było wyłączenie funkcji autoInit podczas uruchamiania aplikacji i zainicjowanie jej z metody onCreate w Activity. AutoInit przed uruchomieniem aplikacji powodowało, że moja aplikacja flutter potrzebowała czasu na uruchomienie przy wolnych połączeniach sieciowych.

  1. Wyłącz funkcję AutoInit z manifestu

    <meta-data android:name="com.facebook.sdk.AutoInitEnabled"
        android:value="false"/>
  2. Zainicjuj zestaw SDK Fb w metodzie onCreate działania

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

1

FacebookSdk.sdkInitialize(getApplicationContext());

Nie ma potrzeby stosowania tej metody, jak mówi dokument Facebooka: Ta funkcja inicjuje pakiet SDK Facebooka jest wywoływana automatycznie podczas uruchamiania aplikacji, jeśli odpowiednie wpisy są wymienione w pliku AndroidManifest, takie jak identyfikator aplikacji Facebook. Automatyczne rejestrowanie zdarzeń z „activApp” można kontrolować za pomocą ustawienia manifestu „com.facebook.sdk.AutoLogAppEventsEnabled”.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.