Open9

flutterアプリにFacebook sdkを追加

ryoryo

File > Swift Packages > Add Package Dependency.
これがないので以下で行った。
File > Add Packages

ryoryo

Up to Next Major
を選択すると、4.0.0が指定されるがそのまま進めると、
has no package.swift manifest for version 4.44.1
と表示される。
Add Anywayは怖いので、mainを指定して追加した。

ryoryo

今回は広告のトラッキングが目的なので、パッケージはFacebookCoreのみとした。
本当にこれだけでよいのか記載がないので心配。

ryoryo

Step 2: Configure Your Projectに従ってInfo.plistを修正。
ログインをMac Catalystアプリケーションで機能させるには、プロジェクトにキーチェーン共有機能を組み込む必要があります。はスキップ。ログインしないので。
Step 3: Connect the App Delegateもスキップ。ログインアクションまたはシェアアクションが実行されたときにネイティブFacebookアプリのログインとシェアリングをSDKが処理できるようにします。は不要のため。なおここを対応する場合AppDelegate.swiftにはflutterの記述もあるので、ドキュメントの通りまるまるコピペしてはいけない。

ryoryo

上記設定でイベントマネージャを確認したが何も変更されていなかった。

ryoryo

Facebookのダッシュボード上でSDKのアップデートをするよう促されていた。

CocoaPodsでも良さそうなのでそちらの手順で行った。

ryoryo
  pod 'FBSDKCoreKit', '~> 8.0.0'
  pod 'FBSDKLoginKit', '~> 8.0.0'
  pod 'FBSDKShareKit', '~> 8.0.0'

をpod 'FirebaseFirestore',の下に配置した。

pod 'FBSDKGamingServiceKit', '~> 8.0.0'

を入れると

Requested but did not find extension point with identifier Xcode.IDEKit.ExtensionSentinelHostApplications for extension
    Xcode.DebuggerFoundation.AppExtensionHosts.watchOS of plug-in com.apple.dt.IDEWatchSupportCore
    '/Users/xxx/Library/Developer/Xcode/DerivedData/Runner-cduzqohqvcvzowemrskshzkuopdq/SourcePackages/artifacts/facebook-ios-sdk/FBSDKCoreKit.xcframework'. (in target 'FacebookCore'
    from project 'Facebook')

といったエラーでfluter runできなかったので削除。(Gamingなので不要との判断)

ryoryo

facebook_app_eventsがFBSDKCoreKitのバージョンに対応していない模様。

[!] CocoaPods could not find compatible versions for pod "FBSDKCoreKit":
  In snapshot (Podfile.lock):
    FBSDKCoreKit (= 8.0.0, ~> 8.0.0)

  In Podfile:
    FBSDKCoreKit (~> 8.0.0)

    facebook_app_events (from `.symlinks/plugins/facebook_app_events/ios`) was resolved to 0.0.1, which depends on
      FBSDKCoreKit (~> 13.1.0)


You have either:
 * changed the constraints of dependency `FBSDKCoreKit` inside your development pod `facebook_app_events`.
   You should run `pod update FBSDKCoreKit` to apply changes you've made.