FacebookSdk.sdkInitialize (Context) está obsoleto

102

Estou usando o facebook-android-sdk-4.19.0 no Android Studio e segui o guia de início rápido do Facebook em https://developers.facebook.com/docs/android/getting-started (Clique no botão Quick Start para entre com sua própria conta do Facebook). No guia, é instruído a copiar e colar o seguinte código no snippet para rastrear os logs do aplicativo

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

No entanto, quando copio e colo o código no android studio, parece que todos os métodos FacebookSdk.sdkInitialize () estão obsoletos. A documentação aqui https://developers.facebook.com/docs/reference/android/current/class/FacebookSdk/ não diz nada sobre qual método usar para inicializar o sdk em vez de sdkInitialize (). Que método devo usar?

Ozan
fonte
1
Se a resposta o ajudou, marque como resposta correta ou se você ainda tiver o mesmo problema, podemos continuar pesquisando.
Yupi

Respostas:

133

Da documentação sobre atualização do SDK:

O SDK do Facebook agora é inicializado automaticamente no início do aplicativo. Se você estiver usando o SDK do Facebook no processo principal e não precisar de um retorno de chamada na conclusão da inicialização do SDK, agora você pode remover chamadas para FacebookSDK.sdkInitialize. Se você precisar de um retorno de chamada, deverá invocá-lo manualmente em seu código.

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

ATUALIZAR

No SDK 4,22 o title, description, captione imagecampo de FBSDKShareLinkContentsão preteridos. Considere removê-los do uso.

Yupi
fonte
1
E quanto ao retorno de chamada da inicialização automática?
Konstantin Konopko
8
Como o FB SDK consegue se inicializar "on Application start"sem a necessidade de adicionar nada em Application.onCreate()??
Sébastien,
5
Respondendo ao meu próprio comentário: desde a v4.19.0, a inicialização do Facebook SDK é feita por um ContentProvider, declarado no manifesto do aplicativo: github.com/facebook/facebook-android-sdk/commit/…
Sébastien
Obrigado Sébastien, eu gasto muito tempo, para descobrir a forma onde chamado sdkInitialize ()
Vahe Gharibyan
2
Se eu remover a linha sdkInitialize, alguns usuários ainda atenderão à exceção: "O SDK do Facebook deve ser inicializado antes de chamar activateApp", versão do sdk: 4.27.0, versão do Android 5.0
diousk
13
FacebookSdk.sdkInitialize(getApplicationContext()); 

Este método está obsoleto, então simplesmente exclua esta linha de código em sua classe. porque de acordo com o Facebook mais recente, agora não precisamos inicializar o SDK manualmente, ele é inicializado sozinho.

VaibhavBhosale
fonte
4

Então, em vez de chamar os métodos obsoletos, você pode chamar AppEventsLogger.activateApp(Application)onCreate () da classe do seu aplicativo

public class MyApplication extends Application{

    @Override
    public void onCreate() {
        super.onCreate();
        AppEventsLogger.activateApp(getApplication());
    }
}
Rakesh Yadav
fonte
1
De acordo com isso, public static void activateApp(Context context) está obsoleto. Sugere usar isso . Para que eu substituído MainActivity.thiscom getApplication().
Nikhil Wagh de
2
MyApplication.thistambém é o mesmo Applicationobjeto. Posso perguntar qual é a necessidade de substituí-lo getApplication()? Eu simplesmente uso this(que também é o mesmo que MyApplication.this) e é recebido comoApplication
vida
1

Meu requisito era desativar o autoInit na inicialização do aplicativo e inicializá-lo a partir do método onCreate de Activity. O AutoInit antes do lançamento do aplicativo estava fazendo meu aplicativo flutter demorar para iniciar em conexões de rede lentas.

  1. Desativar AutoInit do manifesto

    <meta-data android:name="com.facebook.sdk.AutoInitEnabled"
        android:value="false"/>
    
  2. Inicializar Fb sdk no método onCreate da atividade

    FacebookSdk.fullyInitialize();
    AppEventsLogger.activateApp(application);
    
Sahil Patel
fonte
1

FacebookSdk.sdkInitialize(getApplicationContext());

Não há necessidade desse método, como diz o documento do Facebook: Esta função inicializa o SDK do Facebook e é chamada automaticamente na inicialização do aplicativo se as entradas adequadas estiverem listadas no AndroidManifest, como o id do aplicativo do Facebook. O registro automático de eventos de 'activateApp' pode ser controlado por meio da configuração de manifesto 'com.facebook.sdk.AutoLogAppEventsEnabled'.

Rahul Khatri
fonte