読者です 読者をやめる 読者になる 読者になる

tofucodes diary

にほんごのほう

Facebook iOS SDK でアプリ招待が動かなくてはまった話

職場の仲間とマッチングサービスを作ってiOSアプリを担当しリリースしました。

簡単にサービスの概要を書くと、1日1回特定のエリア(恵比寿、六本木など)で開催される食事会にエントリーすることができ、同じエリアにエントリーしたユーザとマッチングさせる(ひと昔前に流行ったようなw)サービスです。

このアプリの中ではパートナーとなる友だちがいないとエントリーできない仕組みになっているため、Facebookのアプリ招待機能を実装することになりました。

iOS用のドキュメントに従い、App Link ToolでApp Linkを作成し、以下の実装で招待のダイアログを開きました。

  • Xcode: 7.2
  • FBSDK: 4.8.0
let content: FBSDKAppInviteContent = FBSDKAppInviteContent()
content.appLinkURL = "FacebookのAppLinkToolで作成したAppLink"
content.appInvitePreviewImageURL = "任意の画像URL"
FBSDKAppInviteDialog.showFromViewController(self, withContent: content, delegate: self)

ところがダイアログの中でユーザを選択して招待を送信してみたところ、被招待ユーザに肝心の招待通知が届きません。

何度もドキュメントと自分の実装を見直したり、ググって解決策を見つけようとしましたが、結局分からず諦めていました。

先日久しぶりに再度招待の実装してみるか、ということで調べ直してみたところ解決したので共有します。

上記のコメントでは以下のように言っています。

Also live App ID from iTunes Connect must be filled in in Facebook App settings

つまり、Facebookのアプリ設定でAppIDも埋まってる必要があるということです。

そこで自分のアプリを確認してみたところ、AppIDの欄はリリース以降更新しておらず空欄のままでした。

そこを埋めて実装は変えず、再度ダイアログから招待を実行してみたところ、無事被招待ユーザに招待通知が届きました。

f:id:tofucode:20151231171424j:plain

アプリの1stリリース時にFacebookログイン機能などを実装して(この時点ではまだAppIDが決まっていないため空欄になる)、リリース後にそのまま招待機能を実装しようとしたら同じような状況になる人がいるのではないかなと思います。(まさに僕がそのパターンでした。)