2015-05-07 39 views
3

我在我的android应用程序中需要实现推送通知,我已经拥有Google API密钥以及所有密钥都已启用推送通知。我需要关于发送推送通知的建议

据我所知,通知将从服务器发送,下游到应用程序。

从本质上讲什么,我要做的是,每当我的数据库得到更新,我想回报将消息发送到特定的设备,没有消息。

但我不是特别明白的是将消息下游发送到手机。这是如何完成的,我只向前发送过HTTP消息给我的服务器,并且对如何完成这件事感到困惑。有没有任何服务器应用程序可以做到这一点,如果是的话,我在找什么。

回答

2

有几种方法从服务器发送下游消息。一个正在使用PHP.You可以编写PHP脚本发送消息到GCM(实际发送通知到手机)。

这是我想出了我的应用程序:

我用卷曲

$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脚本来运行时required.This是什么称为从服务器发送下游消息。

+0

这只会在电话触发时才起作用,对吗?假设我想在没有事先沟通的情况下发送通知给特定的电话。这可以通过PHP来完成吗? –

+0

是的,它可以完成。你必须在你的数据库中使用触发器。每当你的数据库更新时触发你的PHP脚本。通过以下谷歌搜索来了解如何使用触发器从数据库中激发PHP脚本:[link] https://www.google.co.in/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8# q = trigger + php + from + mysql –

+0

经过进一步分析,我觉得你的问题更适合作为答案。谢谢。 –

1

既然你正在寻找一个推送通知的特定服务器的功能,我建议去一些软件,它会为你而不是写的所有代码服务器。

一个这样的软件,我所知道的是IBM MobileFirst(以前称为工作灯)......在它得到推送通知嵌入...可能有更多的服务器软件,在我的dev push server做同样的

+0

谢谢,我看看他们。 –

1

看。所有你需要的只是粘贴你的谷歌API密钥和注册ID在相应的领域,并发送推送到您的客户端。你也可以看看该推送服务器on the Bitbucket

+0

这实际上非常有用,谢谢 –

+1

开发者推送服务器使用aws sns吗?或者只有GCM – kavita

+0

@kavita那个开发推送服务器只使用GCM,我在2 - 3年前写过它。我猜aws sns是新东西。无论如何,请随意修改测试推送服务器https://github.com/alexzatsepin/GcmPusher的源代码,并使其成为现在的实际:) – Samik

2

你不处理下游到手机自己的源代码。您看起来像这样的过程有几个部分。

为自己设定了GCM(听起来像你已经做了)

了该应用注册GCM该设备,并成立了处理程序接收推送消息。这通常是在应用程序启动时完成的,因此,您需要事先与设备进行通信。您通常也会希望给他们选择退出推送消息的选项。大多数事物的应用程序方面的概述here

有当数据库被更新时触发的脚本。然后,您可以通过将消息和特定设备的注册ID作为有效负载传递给GCM以发送消息。

0

我只是想更新这篇文章,以防万一这些信息对他人有用。所以基本上我所做的是当用户安装应用程序时,它将向谷歌注册以获得注册ID,然后将其发送到我的数据库,以备日后需要时使用。现在,当用户通过添加帖子来更新数据库或者添加评论时,它会触发一个在tomcat上运行我的web servlet的php脚本,从那里我的tomcat servlet查询我的数据库并计算出谁(注册ID)为发送消息给。