如何確認 Facebook SDK 已成功安裝在 Android App 專案中

本篇的題目說雖是如此,但內容其實算是 SDK 嵌入追蹤設定的方法 。
也許會有人說,這樣的內容不是已經有一大堆了嗎?而且 Facebook 在 App 建立時也都有提示了,為何還要寫這篇呢?

facebook_developer_app

 

先想一下這樣的狀況:

專案的開發很多時候都會有這樣的狀況,建立 Facebook App 的人並不同時是實作的開發者…

本篇適合閱讀的對象是開發者、建立專案要用的 Facebook App 人員以及讓該人員傳給專案開發者看,結論還是給開發者看 (拖走~

舉個例來說,負責申請 Facebook developer app 的人,很盡責的建立完成後,還找了 Facebook Get Started for Android 的線上文件提供給開發者。這時候負責嵌入程式碼的開發者可能沒有按這份文件弄完,想要在實作登入或是分享功能前,想先驗證 SDK 的配置是否成功,該如何做?

換個方向說, Facebook Get Started for Android 這份上文件所提供的是 SDK 功能開始的起手式,所以在沒有實作完相關功能的串接前,如登入或是分享,開發者這邊無法先確定自己串接好的程式是否可以成功跟 Facebook 串連。

先來說要如何從哪裡確認,Facebook 現在於 developer app dashboard 裡提供一個區塊「Last Mobile App Installs」供我們查看最近安裝載有這個 app 的裝置。

facebook_last_installed開發時,利用這個資訊,可以馬上確認我們所填入的資料以及程式撰寫方式是否正確。

以下分從二處簡單帶過設定流程

  1. Facebook Developer App 建立
  2. Android Project 設定

Facebook Developer App 建立


Facebook Developer 的 My Apps 開始,建立專給 Android 串接用 Facebook App 開始的流程順序中,截出幾個關鍵的畫面說明。

1. App 資訊

facebook_app_input_app_info

這邊因為自己用的語系是「中文(臺灣)」所以在提示文字上會有些中文化的部份,不過看起來真的有些不適應 XD

  • 包裝名稱(Packagename)
    這個欄位還是看英文名詞比較習慣 😛
    以上圖中的例子,即是 biz.mosil.demo.facebook
  • Default Activity Class Name
    設定 Facebook 的起始 Activity Class,以上圖為例,即是 biz.mosil.demo.facebook.MainActivity

2. HashKey

facebook_app_input_app_hashkey

HashKey 是要依我們開發時的 debug.key 或是發佈 APK 用的 keystore 來產出。在 command line 模式裡,下達這樣的指令結構

將上述指令分區色塊化
keytool -exportcert -alias <YOUR_KEY_ALIAS> -keystore <YOUR_KEY_STORE> | openssl sha1 -binary | openssl base64

  • keytool -exportcert

JAVA 的指令集 keytool,參數 -exportcert 產出後面帶著 keystore 的 public 憑證。一般都放在我們自己安裝的 java folder 的 bin 目錄下。以自己這邊的例子來說,就是  C:\Program Files\Java\jdk1.7.0_67\bin\keytool

  • keystore

Android 包成 APK 用的簽名檔,在需要發佈的狀況下通常要有兩支,一支是 debug 用,一支是正式用;這也就是為什麼可以在上面的截圖中看到,Facebook 要我們輸入這兩個 hashkey。
而 keystore 裡面除了最外層的密碼外,裡面還有一層 alias 的密碼,因此,可以在指令結構中,可以看到帶有密碼的  -alias 以及 -keystore 兩個參數。

在正常狀況下,debug 用的那支 debug.keystore  都被存放在家目錄裡的 .android 目錄裡,其密碼都固定為 androiddebugkey

  • openssl

最後再用 openssl 指令集將之加密。而 openssl 在 linux-base 的系統下要安裝是相對簡單的,而 windows 系統就要再去找相關資源。所以 Mosil 這邊都偷懶,直接拿現在都會安裝在 windows 裡的 Git Bash 下的 openssl 來用 XD

最後綜合上述,以自己在沒有設定系統環境路徑變數,又不想去更動到系統變數時,可以用以下的指令方式,對 debug.keystore 產出:

3. 程式嵌入

當您填入上述的資料後在往下一步去的時候會看到這個畫面,

Track App

若您非開發者,務必提醒負責開發的夥伴,有這一段程式碼,尤其是您要做追蹤的話。因為這一段在一開始提及的那份 官方文件 – Facebook Get Started for Android 裡面是沒有的。

4. 完成建立

建立完成後,會在該 Facebook developer App 的 dashboard 介面下方看到下面這樣的區塊

facebook_develper_last_install_0

 

 Android Project 設定


獲得 Facebook Developer App ID,放入專案中,

obtain_app_id按 Facebook 提供的範例,放在 string.xml 裡會是一個較好的地方。

再來在 AndroidManifest.xml 的  <application /> 裡放入  <meta-data /> ,範例如下:

再來只要到啟用的 activity 裡加入下面這段即可:

原則上,只要資料與設定上都沒有問題的話,讓 App 跑在載有 Facebook App 並且是登入狀態中的裝置上,就可以在 dashboard 看到像這樣的畫面。

facebook_develper_last_install_1

這樣就能夠在實作其他功能前先確定這樣是沒問題的了!

在看到程式碼後,相信大家也就能夠知道,為什麼可以透過這樣方法得設定上是沒問題的了。這邊就是用到 SDK 中 AppEventsLogger 這個做追蹤的功能去達到這樣的效果,而至於他還能做到什麼功能,就請各位到 AppEventsLogger 的官方文件去看嘍。

結尾


在這邊大概再提幾個可能會比較沒有留意到的問題

  1. 請先確定開發的設備上,不論是實機或是模擬器上,都已經裝好了 Facebook App,並且要登入一個帳號後,再安裝自己 APP。
  2. Facebook Developer App 是原本就已經有的,而且 Last Mobile App Installs 已經有值的話該怎麼辦?
    嗯…身為一個開發者,請立刻身體力行,請按本文提到的「Facebook Developer App 建立」去申請一個新的也是很應該的,確定沒問題後,再換回原有的 App ID 即可。
    反正 Facebook 又沒有限制我們可建立的數量。用完就能砍掉了(喂!)

Facebook App/SDK 在幾經改版以及演進後,和過去相比,在開發申請的流程上已經有很大的進步,像是介面的呈現,其逐步操作的流程提示中,甚至連嵌入程式碼的重點都很清楚的呈現出來。
可也因為快速的改動,從過去到現在,文件的更新仍是跟不上功能改動速度。但其實放眼看到其他的一樣有提供 SDK 的大型服務,舉凡 Google、Dropbox… 都一樣的狀況。而這也是本文中不想要截太多圖的原因之一 XD

Loading Facebook Comments ...

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *