3

我在調查使用從舊版Google雲消息應用遷移而來的Firebase雲消息傳遞向項目發送消息的可能性。通過Firebase雲消息向Android設備發送消息

舊的應用程序只使用CURL和我的服務器上GCM的應用程序的唯一API密鑰從PHP網頁發送消息到Android設備。

因此,每一個Android設備只需要與代碼登記,如:

mGcm = GoogleCloudMessaging.getInstance(mContext); 
mRegid = mGcm.register(PROJECT_ID); 

讓谷歌服務器使每個設備單獨尋址。 (該regs存儲在我的服務器上的MySql數據庫中,所以我知道要尋址哪個設備。

Android應用程序只需要知道項目編號(PROJECT_ID在上面的代碼中)應用程序可以有任何包名稱。

在我看來,一個火力地堡項目必須通過包名相關

我的問題是:

是否有可能我可以創建一個應用程序來複制與火力地堡即此功能?用任意包名稱並以類似於GCM項目的方式獲得regid(或現在:令牌)?

回答

1

您只需將您的應用添加到Firebase控制檯即可。然後下載google-services.json文件並將其複製到您的項目模塊中(通常命名爲「app」)。

並更新您的項目和模塊gradle構建文件也。

並且還向您的Android Manifest文件添加FirebaseInstanceId & FirebaseMessaging Service

FirebaseInstanceId服務自動管理特定設備的令牌的創建和更新。從方法onTokenRefresh您可以將令牌發送到您的Mysql數據庫。

有關Android的示範項目,只要到:https://github.com/firebase/quickstart-android/tree/master/messaging

欲瞭解更多有關火力地堡:https://firebase.google.com/docs/cloud-messaging/android/client

0

其實它不是很難從GCM遷移到FCM。從this,有人說,你只需要更換:

gcm-http.googleapis.com/gcm/ 

fcm.googleapis.com/fcm/ 

這是從MySQL數據庫與註冊ID發送FCM樣本: 首先創建一個函數用來發送通知你serverKey

function send_notification($tokens, $message){ 
    $url = 'https://fcm.googleapis.com/fcm/send'; 
    $fields = array(
     'registration_ids' => $tokens, 
     'data' => $message 
     ); 

    $headers = array(
     'Authorization:key = 
      AIzaYOUR_SERVER_KEY', 
     'Content-Type: application/json' 
     ); 

    $ch = curl_init(); 
    curl_setopt($ch, CURLOPT_URL, $url); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields)); 

    $result = curl_exec($ch); 
    if($result === FALSE){ 
     die('Curl failed : ' . curl_error($ch)); 
    } 
    curl_close($ch); 
    return $result; 
} 

要使用上述功能,您需要查詢registrationId的列表,例如:

$conn = mysqli_connect("localhost","dbuser","dbpass","dbname"); 
$sql = " Select Token From users"; 
$result = mysqli_query($conn,$sql); 
$tokens = array(); 

if(mysqli_num_rows($result) > 0){ 
    while($row = mysqli_fetch_assoc($result)){ 
     $tokens[] = $row["Token"]; 
    } 
} 

mysqli_close($conn); 

$message = array("messageText" => " FCM PUSH NOTIFICATION TEST MESSAGE"); 
$message_status = send_notification($tokens,$message); 
echo $message_status; 
1

是,與FCM的實例ID令牌(設備ID)的產生仍然是基於項目的ID,你仍然可以使用IID令牌和從項目有效的API密鑰發送到該設備。

如果您只是在不將當前項目導入Firebase項目的情況下使用FCM,則使用Firebase的大部分好處都將丟失。

相關問題