FacebookSdk.sdkInitialize (บริบท) เลิกใช้งานแล้ว


103

ฉันใช้ 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 studio ดูเหมือนว่าทุกวิธี FacebookSdk.sdkInitialize () จะเลิกใช้งานแล้ว เอกสารประกอบที่นี่https://developers.facebook.com/docs/reference/android/current/class/FacebookSdk/ไม่ได้บอกอะไรเกี่ยวกับวิธีการที่จะใช้ในการเริ่มต้น sdk แทน sdkInitialize () ฉันควรใช้วิธีใด?


1
หากคำตอบช่วยคุณได้โปรดทำเครื่องหมายว่าเป็นคำตอบที่ถูกต้องหรือหากคุณยังคงพบปัญหาเดิมเราสามารถค้นหาต่อไปได้
ยุปี

คำตอบ:


135

จากเอกสารเกี่ยวกับการอัพเกรด SDK:

ขณะนี้ Facebook SDK เริ่มต้นโดยอัตโนมัติเมื่อเริ่มแอปพลิเคชัน หากคุณใช้ Facebook SDK ในกระบวนการหลักและไม่ต้องการการติดต่อกลับเมื่อเสร็จสิ้นการเริ่มต้น SDK คุณสามารถลบการโทรไปยัง FacebookSDK.sdkInitialize ได้แล้ว หากคุณต้องการโทรกลับคุณควรเรียกใช้การโทรกลับด้วยตนเองในรหัสของคุณ

อ้างถึง: https://developers.facebook.com/docs/android/upgrading-4x

อัปเดต

ใน SDK 4.22 title, description, captionและimageด้านการFBSDKShareLinkContentเลิก พิจารณาลบออกจากการใช้งาน


1
แล้วการเรียกกลับของการเริ่มต้นอัตโนมัติล่ะ?
Konstantin Konopko

9
FB SDK จัดการการเริ่มต้นตัวเองได้อย่างไร"on Application start"โดยไม่จำเป็นต้องเพิ่มอะไรในApplication.onCreate()??
เซบาส

5
ตอบความคิดเห็นของฉันเอง: ตั้งแต่ v4.19.0 การเริ่มต้น Facebook SDK นั้นทำโดย ContentProvider ซึ่งประกาศในรายการแอป: github.com/facebook/facebook-android-sdk/commit/…
Sébastien

ขอบคุณSébastienฉันใช้เวลาส่วนใหญ่เพื่อหารูปแบบที่เรียกว่า sdkInitialize ()
Vahe Gharibyan

2
หากฉันลบบรรทัด sdkInitialize ผู้ใช้บางรายยังคงพบข้อยกเว้น: "ต้องเริ่มต้น sdk ของ Facebook ก่อนเรียกใช้งานแอปพลิเคชัน", เวอร์ชัน 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().
Nikhil Wagh

2
MyApplication.thisก็เป็นApplicationวัตถุเดียวกัน ฉันขอถามความจำเป็นในการแทนที่ด้วยgetApplication()อะไร ฉันแค่ใช้this(ซึ่งก็เหมือนกับMyApplication.this) และได้รับเมื่อApplication
vida

1

ความต้องการของฉันคือปิดใช้งาน autoInit เมื่อเปิดแอปและเริ่มต้นจากเมธอด onCreate ของกิจกรรม AutoInit ก่อนการเปิดตัวแอปทำให้แอปพลิเคชันของฉันใช้เวลานานในการเริ่มการเชื่อมต่อเครือข่ายที่ช้า

  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 doc บอก: ฟังก์ชันนี้จะเริ่มต้น Facebook SDK จะเรียกโดยอัตโนมัติเมื่อเริ่มต้นแอปหากรายการที่ถูกต้องแสดงอยู่ใน AndroidManifest เช่นรหัสแอป facebook การบันทึกเหตุการณ์อัตโนมัติจาก 'enableApp' สามารถควบคุมผ่านการตั้งค่ารายการ 'com.facebook.sdk.AutoLogAppEventsEnabled'

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.