2016年以後,GCM開始被停止更新和支援,推播功能也被重新命名為FCM,並使用Firebase做為後台運作的機制。
要使用Firebase的Library,就一定要使用Gradlle並且搭配Android Studio的檔案讀取、解壓縮功能,Maven的Library導入功能並不支援AndroidSDK中的新檔案類型。
解決辦法(第一步)是去Android Studio下建立一個專案後,從這個專案中取出相對應的各種Library。
如果不想這樣做,這裡有人(外國網友:dandar3)幫忙把所有專案都上傳到Github。(同時他也有說明其他步驟...)
(專案中有些AndroidManifest.xml的內容需要被註解起來,因為它的內容是要在APP project的AndroidManifest.xml中完成,而不是在library中。)
接著到Firebase的Console中,建立一個新專案,(原則跟在Google Cloud Plateform下建立新專案並增加一份權限很像。)
建立完成後,Console會提供一份Json檔讓開發者下載,(同時有提供導引讓使用者知道要在Android Studio下如何使用這份檔案。)
但Maven環境不能使用這份檔案,必須要使用XML檔轉複製這份Json的內容。
先在APP Project下建立一份XML檔,附檔名如下、路徑也如下。
作者(DanDar3)在後面寫入值的地方留下的指引。
(或是到官方說明文件下看指引。)
例如「{YOUR)CLIENT}/oauth_client/[first client _type 3]」的意思是「在JSON物件的root層找到client參數,然後再往下找到oauth_client參數,接著會發現一個陣列,在陣列第一筆資料中找到client_type,就是要寫入這裡的值。
以下的原則就跟官方指引的內容其實大同小異。
【2017/10/16 19:42 確實可以成功取得FCM的Token,只是還沒被驗證過是否可用或正確。】
【2018/04/09 14:08 getToken如果一直取得Null,要改用需要傳入兩個字串參數值的getToken。兩個字串參數分別是使用getId取得的字串和固定字串「FCM」。】
【2018/04/20 16:33 取得Token時會獲得Invalid_Sender。】
要使用Firebase的Library,就一定要使用Gradlle並且搭配Android Studio的檔案讀取、解壓縮功能,Maven的Library導入功能並不支援AndroidSDK中的新檔案類型。
解決辦法(第一步)是去Android Studio下建立一個專案後,從這個專案中取出相對應的各種Library。
如果不想這樣做,這裡有人(外國網友:dandar3)幫忙把所有專案都上傳到Github。(同時他也有說明其他步驟...)
(專案中有些AndroidManifest.xml的內容需要被註解起來,因為它的內容是要在APP project的AndroidManifest.xml中完成,而不是在library中。)
接著到Firebase的Console中,建立一個新專案,(原則跟在Google Cloud Plateform下建立新專案並增加一份權限很像。)
建立完成後,Console會提供一份Json檔讓開發者下載,(同時有提供導引讓使用者知道要在Android Studio下如何使用這份檔案。)
但Maven環境不能使用這份檔案,必須要使用XML檔轉複製這份Json的內容。
先在APP Project下建立一份XML檔,附檔名如下、路徑也如下。
1
2
3
4
5
6
7
8
9
| <? xml version = "1.0" encoding = "utf-8" ?> < resources > < string name = "default_web_client_id" translatable = "false" >{YOUR_CLIENT}/oauth_client/[first client_type 3]</ string > < string name = "gcm_defaultSenderId" translatable = "false" >project_info/project_number</ string > < string name = "firebase_database_url" translatable = "false" >project_info/firebase_url</ string > < string name = "google_app_id" translatable = "false" >{YOUR_CLIENT}/client_info/mobilesdk_app_id</ string > < string name = "google_api_key" translatable = "false" >{YOUR_CLIENT}/services/api_key/current_key</ string > < string name = "google_storage_bucket" translatable = "false" >project_info/storage_bucket</ string > </ resources > |
(或是到官方說明文件下看指引。)
例如「{YOUR)CLIENT}/oauth_client/[first client _type 3]」的意思是「在JSON物件的root層找到client參數,然後再往下找到oauth_client參數,接著會發現一個陣列,在陣列第一筆資料中找到client_type,就是要寫入這裡的值。
以下的原則就跟官方指引的內容其實大同小異。
【2017/10/16 19:42 確實可以成功取得FCM的Token,只是還沒被驗證過是否可用或正確。】
【2018/04/09 14:08 getToken如果一直取得Null,要改用需要傳入兩個字串參數值的getToken。兩個字串參數分別是使用getId取得的字串和固定字串「FCM」。】
【2018/04/20 16:33 取得Token時會獲得Invalid_Sender。】