【问题标题】:I need suggestions on sending push notifications我需要有关发送推送通知的建议
【发布时间】:2015-05-07 17:45:24
【问题描述】:

我在我的 android 应用程序中需要实现推送通知,我已经有一个 Google API 密钥和所有密钥,并在密钥上启用了推送通知。

我了解通知将从服务器发送到应用程序的下游。

基本上,我想要做的是每当我的数据库更新时,我希望向特定设备发送一条消息,而不会返回任何消息。

但我不太明白的是向下游发送消息到手机。这是如何完成的,我只向我的服务器上游发送了 HTTP 消息,并且对如何完成此操作有些困惑。是否有任何服务器应用程序可以做到这一点,如果有,我在寻找什么。

【问题讨论】:

    标签: android google-app-engine google-cloud-messaging


    【解决方案1】:

    从服务器发送下游消息有多种方式。一种是使用 PHP。您可以编写 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 脚本运行。这就是所谓的从服务器发送下游消息。

    【讨论】:

    • 这只有在手机触发时才有效,对吗?假设我想在没有事先沟通的情况下向特定手机发送通知。可以通过 PHP 完成吗?
    • 是的,它可以完成。您必须在数据库中使用触发器。每当您的数据库更新时,触发器就会触发您的 PHP 脚本。通过以下谷歌搜索了解如何使用触发器从数据库中触发 PHP 脚本:[link]google.co.in/…
    • 经过进一步分析,我觉得你的问题更适合作为答案。谢谢。
    【解决方案2】:

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

    使用 GCM 设置自己(听起来您已经完成了)

    让应用为 GCM 注册该设备并设置处理程序以接收推送消息。这通常在应用程序启动时完成,所以是的,您需要事先与设备通信。您通常还希望让他们选择退出推送消息。大多数应用程序方面的东西都被概述了here

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

    【讨论】:

      【解决方案3】:

      多一点搜索就会得到这个:

      Push Notifications in Android using Google App Engine

      它应该是您正在寻找的。这是 Google 网站的链接,也提供了一些额外的见解:http://developer.android.com/google/gcm/http.html

      【讨论】:

      • 谢谢我已经看过了,只是想弄清楚是否有解决方法如果我不想设置 apache ant。
      【解决方案4】:

      由于您正在寻找具有推送通知的特定服务器功能,因此我建议您使用一些可以为您完成此功能的软件,而不是为服务器编写所有代码。

      我知道的这样一个软件是 IBM MobileFirst(以前称为 Worklight)...它嵌入了推送通知...可能还有更多服务器软件可以做到这一点

      【讨论】:

      • 谢谢,我去看看。
      【解决方案5】:

      看看我的dev push server。您只需将您的 google api 密钥和注册 ID 粘贴到相应的字段中,然后将推送发送给您的客户。您也可以查看该推送服务器的源代码on the Bitbucket

      【讨论】:

      • 开发推送服务器是否使用aws sns?或者只有 GCM
      • @kavita 那个开发推送服务器只使用 GCM,我是 2-3 年前写的。我猜 aws sns 是新事物。无论如何,请随时修改测试推送服务器github.com/alexzatsepin/GcmPusher 的源代码并使其成为现实:)
      【解决方案6】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-17
        • 1970-01-01
        • 2014-05-29
        • 2019-10-08
        • 2018-02-09
        • 1970-01-01
        相关资源
        最近更新 更多