FacebookSdk.sdkInitialize (Context) tidak digunakan lagi


102

Saya menggunakan facebook-android-sdk-4.19.0 di Android Studio dan saya mengikuti panduan mulai cepat Facebook di https://developers.facebook.com/docs/android/getting-started (Klik tombol Quick Start untuk masuk dengan akun facebook Anda sendiri). Dalam panduan, diperintahkan untuk menyalin & menempel kode berikut di cuplikan untuk melacak log aplikasi

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

Namun, saat saya menyalin kode yang ditempelkan di android studio, tampaknya semua metode FacebookSdk.sdkInitialize () tidak digunakan lagi. Dokumentasi di sini https://developers.facebook.com/docs/reference/android/current/class/FacebookSdk/ tidak memberi tahu apa pun tentang metode yang akan digunakan untuk menginisialisasi sdk alih-alih sdkInitialize (). Metode apa yang harus saya gunakan?


1
Jika jawaban membantu Anda, silakan tandai sebagai jawaban yang benar atau jika Anda masih memiliki masalah yang sama kami dapat melanjutkan pencarian.
Yupi

Jawaban:


133

Dari dokumentasi tentang meningkatkan SDK:

SDK Facebook sekarang diinisialisasi secara otomatis saat Aplikasi dimulai. Jika Anda menggunakan Facebook SDK dalam proses utama dan tidak memerlukan callback saat penyelesaian inisialisasi SDK, Anda sekarang dapat menghapus panggilan ke FacebookSDK.sdkInitialize. Jika Anda memang membutuhkan panggilan balik, Anda harus memanggil panggilan balik secara manual dalam kode Anda.

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

MEMPERBARUI

Dalam SDK 4.22 title, description, captiondan imagebidang FBSDKShareLinkContentyang usang. Pertimbangkan untuk menghapusnya dari penggunaan.


1
Bagaimana dengan callback inisialisasi otomatis?
Konstantin Konopko

8
Bagaimana FB SDK mengatur untuk menginisialisasi dirinya sendiri "on Application start"tanpa perlu menambahkan apapun Application.onCreate()??
Sébastien

5
Menjawab komentar saya sendiri: sejak v4.19.0, inisialisasi Facebook SDK dilakukan oleh ContentProvider, yang dinyatakan dalam manifes aplikasi: github.com/facebook/facebook-android-sdk/commit/…
Sébastien

Terima kasih Sébastien, saya menghabiskan banyak waktu, untuk mencari tahu bentuk yang disebut sdkInitialize ()
Vahe Gharibyan

2
Jika saya menghapus baris sdkInitialize, beberapa pengguna masih memenuhi pengecualian: "Facebook sdk harus diinisialisasi sebelum memanggil ActivApp", versi sdk: 4.27.0, Android versi 5.0
diousk

13
FacebookSdk.sdkInitialize(getApplicationContext()); 

Metode ini sudah usang, jadi cukup hapus baris kode ini di kelas Anda. karena menurut Facebook terbaru kita sekarang tidak perlu menginisialisasi SDK secara manual, itu akan menginisialisasi dengan sendirinya.


4

Jadi, alih-alih memanggil metode yang tidak digunakan lagi, Anda bisa memanggil AppEventsLogger.activateApp(Application)di dalam onCreate () kelas aplikasi Anda.

public class MyApplication extends Application{

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

1
Menurut ini public static void activateApp(Context context) sudah usang. Ini menyarankan untuk menggunakan ini . Untuk itu saya ganti MainActivity.thisdengan getApplication().
Nikhil Wagh

2
MyApplication.thisjuga Applicationobjek yang sama . Bolehkah saya bertanya apa perlunya menggantinya getApplication()? Saya hanya menggunakan this(yang juga sama dengan MyApplication.this) dan diterima sebagaiApplication
vida

1

Persyaratan saya adalah menonaktifkan autoInit saat peluncuran aplikasi dan menginisialisasinya dari metode onCreate Aktivitas. AutoInit sebelum peluncuran aplikasi menyebabkan aplikasi flutter saya membutuhkan waktu untuk memulai koneksi jaringan yang lambat.

  1. Nonaktifkan AutoInit dari manifes

    <meta-data android:name="com.facebook.sdk.AutoInitEnabled"
        android:value="false"/>
  2. Inisialisasi sdk Fb dalam metode onCreate aktivitas

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

1

FacebookSdk.sdkInitialize(getApplicationContext());

Tidak perlu metode ini karena dokumen Facebook mengatakan: Fungsi ini menginisialisasi Facebook SDK dipanggil secara otomatis saat aplikasi dimulai jika entri yang tepat terdaftar di AndroidManifest, seperti id aplikasi facebook. Pencatatan peristiwa otomatis dari 'ActivApp' dapat dikontrol melalui setelan manifes 'com.facebook.sdk.AutoLogAppEventsEnabled'.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.