我在我的Android应用程序中需要实现推送通知,我已经拥有了一个Google API密钥,并且已经启用了密钥上的推送通知。
我了解通知将从服务器下游发送到应用程序。
基本上我想要做的就是每当我的数据库更新时,我都希望向特定设备发送消息而不返回任何消息。
但我并不特别理解将消息发送到手机的下游。这是怎么做到的,我只是向我的服务器上游发送了HTTP消息,并且对如何完成这一点感到有些困惑。是否有任何服务器应用程序可以执行此操作,如果是这样,我在寻找什么。
答案 0 :(得分:2)
有几种方法可以从服务器发送下游消息。正在使用PHP.You可以编写PHP脚本,用于向GCM发送消息(实际上是向手机发送通知)。
这是我为我的应用提出的:
我使用过curl
$url = 'https://android.googleapis.com/gcm/send';
$receive_id=$_POST['receiver_key'];
$message=$_POST['message'];
$registrationIDs = array( $receive_id);
$fields = array(
'registration_ids' => $registrationIDs,
'data' => array( "message" => $message ),
);
$headers = array(
'Authorization: key=' . $api_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_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt( $ch, CURLOPT_POSTFIELDS, json_encode($fields) );
$curl_result = curl_exec( $ch );
我实际做的是让应用程序触发此PHP脚本在需要时运行。这就是从服务器发送下游消息的内容。
答案 1 :(得分:2)
You don't handle the downstream to the phone yourself. You have several parts to the process that look like this.
Set yourself up with GCM (sounds like you've done already)
Have the app register that device for GCM and set up the handler for receiving push messages. This is usually done on app launch, so yes you will need prior communication with a device. You will also typically want to give them the option to opt out of push messages. Most of the app side of things are outlined here
Have a script that fires when your database is updated. You can then make the call to GCM to send the message by passing the message and specific devices' registration IDs as your payload.
答案 2 :(得分:1)
多一点搜索就能得到你:
Push Notifications in Android using Google App Engine
应该是你正在寻找的东西。这是指向Google网站的链接,还提供了一些有关它的更多信息:http://developer.android.com/google/gcm/http.html
答案 3 :(得分:1)
由于您正在寻找具有推送通知的特定服务器功能,我建议您使用一些为您执行此操作的软件,而不是为服务器编写所有代码。
我所知道的一个这样的软件是IBM MobileFirst(以前称为Worklight)......它的推送通知嵌入了...可能有更多的服务器软件可以做同样的事情
答案 4 :(得分:1)
看看我的dev push server。您只需将google api密钥和注册ID粘贴到相应的字段中,然后将推送发送给您的客户。您还可以查看该推送服务器on the Bitbucket
的源代码答案 5 :(得分:0)
我只是想更新这篇文章,以防这些信息对其他人有用。基本上我所做的就是当用户安装应用程序时,它会向谷歌注册以获取注册ID,然后它将把它发送到我的数据库,以便我以后需要它。现在,当用户通过添加帖子更新数据库或者说添加注释时,它将触发在tomcat上运行我的web servlet的php脚本,从那里我的tomcat servlet查询我的数据库并找出谁(注册ID)到发送消息给。