通过Firebase云消息向Android设备发送消息
我在调查使用从旧版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(或现在:令牌)? 。
您只需将您的应用添加到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
其实它不是很难从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;
是,与FCM的实例ID令牌(设备ID)的产生仍然是基于项目的ID,你仍然可以使用IID令牌和从项目有效的API密钥发送到该设备。
如果您只是在不将当前项目导入Firebase项目的情况下使用FCM,则使用Firebase的大部分好处都将丢失。