FacebookSdk.sdkInitialize(Context)は廃止予定です


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
回答が役に立った場合は、正解としてマークしてください。または、同じ問題が引き続き発生する場合は、検索を続行できます。
ユピ

回答:


131

SDKのアップグレードに関するドキュメントから:

Facebook SDKがアプリケーションの起動時に自動的に初期化されるようになりました。メインプロセスでFacebook SDKを使用していて、SDKの初期化完了時にコールバックが必要ない場合は、FacebookSDK.sdkInitializeの呼び出しを削除できます。コールバックが必要な場合は、コードで手動でコールバックを呼び出す必要があります。

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

更新

SDK 4.22でtitledescriptioncaptionimageのフィールドがFBSDKShareLinkContent推奨されていません。使用からそれらを削除することを検討してください。


2
わかりました、ありがとう。
オザン

1
自動初期化のコールバックはどうですか?
Konstantin Konopko

8
FB SDKは、"on Application start"何も追加する必要なく、どうやってそれ自体を初期化するのですApplication.onCreate()か?
セバスチャン2017年

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を手動で初期化する必要がないため、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. アクティビティのonCreateメソッドでFb SDKを初期化します

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

0

FacebookSdk.sdkInitialize(getApplicationContext());

Facebook docが言うように、このメソッドは不要です。この関数は、FacebookのアプリIDのように、AndroidManifestに適切なエントリがリストされている場合、アプリの起動時にFacebook SDKを自動的に呼び出すように初期化します。「activateApp」からの自動イベントロギングは、「com.facebook.sdk.AutoLogAppEventsEnabled」マニフェスト設定を介して制御できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.