FacebookSdk.sdkInitialize (Context) устарел


102

Я использую facebook-android-sdk-4.19.0 в Android Studio, и я следил за кратким руководством по началу работы с Facebook по адресу https://developers.facebook.com/docs/android/getting-started (нажмите кнопку быстрого запуска, чтобы войдите в свою учетную запись facebook). В руководстве предлагается скопировать и вставить следующий код во фрагмент для отслеживания журналов приложений.

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

Однако, когда я копирую вставленный код в студию Android, кажется, что все методы FacebookSdk.sdkInitialize () устарели. В документации здесь https://developers.facebook.com/docs/reference/android/current/class/FacebookSdk/ ничего не говорится о том, какой метод использовать для инициализации sdk вместо sdkInitialize (). Какой метод мне следует использовать?


1
Если ответ помог вам, отметьте его как правильный ответ, или если у вас все еще есть та же проблема, мы можем продолжить поиск.
Yupi

Ответы:


133

Из документации по обновлению SDK:

SDK Facebook теперь автоматически инициализируется при запуске приложения. Если вы используете Facebook SDK в основном процессе и не нуждаетесь в обратном вызове при завершении инициализации SDK, теперь вы можете удалить вызовы FacebookSDK.sdkInitialize. Если вам действительно нужен обратный вызов, вы должны вручную вызвать обратный вызов в своем коде.

Обратитесь к: https://developers.facebook.com/docs/android/upgrading-4x

ОБНОВИТЬ

В SDK 4.22 title, description, captionи imageполе FBSDKShareLinkContentустарели. Рассмотрите возможность исключения их из использования.


1
А как насчет обратного вызова автоматической инициализации?
Константин Конопко

8
Как FB SDK удается инициализировать себя "on Application start"без необходимости добавлять что-либо Application.onCreate()?
Себастьян

5
Отвечая на свой комментарий: начиная с версии 4.19.0, инициализация SDK Facebook выполняется ContentProvider, объявленным в манифесте приложения: github.com/facebook/facebook-android-sdk/commit/…
Себастьен

Спасибо, Себастьен, я трачу много времени, чтобы выяснить форму, в которой называется sdkInitialize ()
Ваге Гарибян

2
Если я удалю строку sdkInitialize, некоторые пользователи все равно встретят исключение: «Facebook sdk должен быть инициализирован перед вызовом activateApp», версия sdk: 4.27.0, версия Android 5.0
diousk

13
FacebookSdk.sdkInitialize(getApplicationContext()); 

Этот метод устарел, поэтому просто удалите эту строку кода в своем классе. потому что, согласно последней версии Facebook, теперь нам не нужно инициализировать SDK вручную, он инициализируется сам.


4

Поэтому вместо вызова устаревших методов вы можете вызывать AppEventsLogger.activateApp(Application)внутри класса приложения onCreate ()

public class MyApplication extends Application{

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

1
В соответствии с этим public static void activateApp(Context context) устарело. Предлагает воспользоваться этим . Для этого я заменил MainActivity.thisна getApplication().
Нихил Ваг

2
MyApplication.thisтоже тот же Applicationобъект. Могу я спросить, на что его заменять getApplication()? Я просто использую this(который также совпадает с MyApplication.this), и он получен какApplication
vida

1

Моим требованием было отключить autoInit при запуске приложения и инициализировать его с помощью метода onCreate Activity. AutoInit перед запуском приложения приводил к тому, что моему приложению flutter требовалось время для запуска при медленных сетевых подключениях.

  1. Отключить AutoInit из манифеста

    <meta-data android:name="com.facebook.sdk.AutoInitEnabled"
        android:value="false"/>
  2. Инициализировать Fb sdk в методе onCreate действия

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

1

FacebookSdk.sdkInitialize(getApplicationContext());

Нет необходимости в этом методе, как говорится в документе Facebook: эта функция инициализирует SDK Facebook, вызывается автоматически при запуске приложения, если в AndroidManifest указаны соответствующие записи, такие как идентификатор приложения facebook. Автоматическим ведением журнала событий из «activateApp» можно управлять с помощью настройки манифеста «com.facebook.sdk.AutoLogAppEventsEnabled».

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.