不推荐使用FacebookSdk.sdkInitialize(上下文)


101

我在Android Studio中使用facebook-android-sdk-4.19.0,并且按照https://developers.facebook.com/docs/android/getting-started上的Facebook快速入门指南进行操作(单击“快速入门”按钮以使用您自己的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/上的文档没有说明使用什么方法而不是sdkInitialize()来初始化sdk。我应该使用哪种方法?


1
如果答案对您有帮助,请标记为正确答案,或者如果您仍然遇到相同的问题,我们可以继续搜索。
Yupi

Answers:


131

从有关升级SDK的文档中:

Facebook SDK现在在应用程序启动时自动初始化。如果您在主要过程中使用Facebook SDK,并且不需要在SDK初始化完成时进行回调,则可以删除对FacebookSDK.sdkInitialize的调用。如果确实需要回调,则应在代码中手动调用该回调。

请参阅:https : //developers.facebook.com/docs/android/upgrading-4x

更新

在SDK 4.22中title,的descriptioncaptionimage字段FBSDKShareLinkContent已弃用。考虑从使用中删除它们。


2
收到了。谢谢。
奥赞(Ozan)

1
回调自动初始化呢?
Konstantin Konopko '17

8
FB SDK如何在不"on Application start"添加任何内容的情况下设法自行初始化Application.onCreate()
塞巴斯蒂安

5
回答我的评论:自从v4.19.0,Facebook的SDK初始化是由ContentProvider的完成,在应用程序清单中声明:github.com/facebook/facebook-android-sdk/commit/...
塞巴斯蒂安

2
如果我删除sdkInitialize行,某些用户仍然会遇到例外:“必须在调用activateApp之前初始化Facebook sdk”,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.thisgetApplication()
Nikhil Wagh's

2
MyApplication.this也是同一Application对象。请问有什么需要替换的getApplication()?我只是使用this(也与相同MyApplication.this),它的接收日期为Application
vida

1

我的要求是在应用启动时禁用autoInit,并通过Activity的onCreate方法对其进行初始化。应用启动前的自动初始化导致我的抖动应用花一些时间才能启动缓慢的网络连接。

  1. 从清单禁用自动初始化

    <meta-data android:name="com.facebook.sdk.AutoInitEnabled"
        android:value="false"/>
  2. 在活动的onCreate方法中初始化Fb sdk

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

0

FacebookSdk.sdkInitialize(getApplicationContext());

如Facebook doc所述,无需使用此方法:如果在AndroidManifest中列出了正确的条目(例如facebook app id),则该函数将在应用启动时自动调用Facebook SDK。可以通过“ com.facebook.sdk.AutoLogAppEventsEnabled”清单设置控制来自“ activateApp”的自动事件记录。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.