【问题标题】:Push Notification in Android?Android中的推送通知?
【发布时间】:2011-08-20 02:47:48
【问题描述】:

是否可以在 Android 中创建推送通知?我真正想要的是,每当我有话要对我的应用程序的用户说时,我希望一些警报对话框“仅”在我有话要说时弹出,例如“新的更新现已在市场上可用,请更新您的应用”。有人可以指导我吗?

【问题讨论】:

  • Here我已经发布了解决方案,对于推送通知的实现,可能会对你有所帮助。

标签: android notifications push


【解决方案1】:

send push notification 在android 应用程序中,您需要在创建项目后在firebase 控制台中创建一个项目,然后您将被重定向到项目仪表板单击android 图标并添加您的android 项目包并保存。您需要下载 google-services.json 文件,您需要将其添加到您的 android 项目中。 您需要在项目依赖项中添加 firebase 库并同步您的项目。

您可以阅读有关Firebase push notification android实现的完整教程

【讨论】:

    【解决方案2】:

    已弃用使用 GCM 发送推送通知,请使用 Firebase 云消息传递 (FCM)

    Google 弃用了 Google Cloud Messaging (GCM) 并推出了新的推送通知服务器,即 Firebase Cloud Messaging (FCM)。 FCM 和 GCM 一样,FCM 也是移动平台的跨平台消息解决方案

    查看此答案了解更多详情: How to add a push notification in my own android app

    【讨论】:

      【解决方案3】:

      步骤:- 1. 描述:- 从https://console.developers.google.com 获取一个帐户,然后创建一个项目,这里这个项目有一些我们称为 senderid 的唯一 ID。 步骤:- 2. 从左侧菜单中选择项目之后,您将看到一些功能列表。 步骤:- 3. 然后启用适用于 Android 的 Google Cloud Messaging 的 api 功能。 步骤:- 4. 现在创建可以从中生成的服务器密钥(应用程序密钥)。单击创建新密钥按钮后转到 APIs & Auth 然后在凭证内部,生成没有任何 IP 地址(无输入)的服务器密钥,并使用 applicationId 下的服务器密钥(API 密钥)。 步骤:- 5. 现在按照下面的代码。 步骤:- 6. 将 Android 开发者提供的 RegId 传递给 DeviceId,并将其作为输入字符串传递给 DeviceId。

      以下是 Android 向 GCM 服务器推送消息的方法

      private Helpers.Response GCMAndroid(Notification notification)
              {
                  var applicationID = " applicationID means google Api key"                                                                                                    
                  var SENDER_ID = "SENDER_ID is nothing but your ProjectID (from API Console- google code)"                                   
                  WebRequest tRequest;
                  tRequest = WebRequest.Create("https://android.googleapis.com/gcm/send");
                  tRequest.Method = "POST";
                  tRequest.ContentType = "application/x-www-form-urlencoded;charset=UTF-8";
                  tRequest.Headers.Add(string.Format("Authorization: key={0}", applicationID));
                  tRequest.Headers.Add(string.Format("Sender: id={0}", SENDER_ID));
      
                  //string postData = "data.Alert=" + alertmessage + "&data.action-loc-key=" + actionKey + " &registration_id=" + deviceId + "&badge=" + (1).ToString() + "";
                  var Details = JsonConvert.SerializeObject(notification.alertmessage);
      
                  string postData = "collapse_key=score_update&time_to_live=108&delay_while_idle=1&data.message="
                      + notification.alertmessage + "&data.time=" + System.DateTime.Now.ToString() + "&data.details=" + Details + "&registration_id=" + notification.deviceId + "";
                  try
                  {
                      Byte[] byteArray = Encoding.UTF8.GetBytes(postData);
                      tRequest.ContentLength = byteArray.Length;
                      Stream dataStream = tRequest.GetRequestStream();
                      dataStream.Write(byteArray, 0, byteArray.Length);
                      dataStream.Close();
                      WebResponse tResponse = tRequest.GetResponse();
      
                      dataStream = tResponse.GetResponseStream();
                      StreamReader tReader = new StreamReader(dataStream);
                      String sResponseFromServer = tReader.ReadToEnd();   //Get response from GCM server.`enter code here`enter code here`
          enter code here
                      tReader.Close();
                      dataStream.Close();
                      tResponse.Close();
                      Helpers.Response Response = new Helpers.Response();
                      Response.Message = "Success";
                      Response.result = 1;
                      return Response;
                  }
                  catch (Exception ex)
                  {
                      Helpers.Response Response = new Helpers.Response();
                      Response.Message = ex.ToString();
                      Response.result = 0;
                      return Response;
                  }
              }
      

      【讨论】:

        【解决方案4】:

        Firebase (FCM) 是 Google 在 Android 上发送推送通知的新方法(2016 年 5 月 18 日)。 Getting started guide

        【讨论】:

          【解决方案5】:

          轻松简单的方法:

          如果您的目标用户群不大(少于 1000 人)并且您希望从免费服务开始,那么 Airbop 是最好和最方便的。

          Airbop Website 它通过其 API 使用 Google Cloud Messaging 服务,并提供了良好的性能。我已经在我的两个项目中使用了它,并且很容易实现它。

          Parse 和 Urbanship 等服务非常出色,但需要付费,并提供完整的部署堆栈,而不仅仅是推送通知。

          如果只有推送服务是您的目标,Airbop 就可以正常工作。

          我没用过Pushwoosh,不过也是个不错的选择。它允许推送到 1,000,000 台设备。

          【讨论】:

            【解决方案6】:

            Android Cloud to Device Messaging framework (C2DM)。它需要 Android 2.2 或更高版本。如果您需要适用于以前版本的东西,Urban Airship 有可能满足您的需求。我都没有用过,所以不能说好不好。

            编辑:

            重要提示:C2DM 已于 2012 年 6 月 26 日正式弃用。 这意味着 C2DM 已停止接受新用户和配额 要求。不会向 C2DM 添加任何新功能。但是,应用程序使用 C2DM 将继续工作。鼓励现有 C2DM 开发人员 迁移到新版本的 C2DM,称为 Google Cloud Messaging for Android (GCM)。

            【讨论】:

            • C2DM 已被 Google Cloud Messaging framework (GCM) 取代,它大大优于 C2DM:例如,不再有配额,它非常高效且非常非常快。您将需要创建第三方服务器或使用 AirBop 等服务来跟踪设备注册 ID 并处理诸如将推送请求分成 1000 个批次等事情。
            【解决方案7】:

            我已经使用了推送通知的这个功能..

            我已经引用了http://developer.android.com/guide/google/gcm/gs.html 链接..

            这很好用,你肯定会学到很多东西。

            您只需要按照说明进行操作即可。并且您将能够执行推送通知。

            【讨论】:

              【解决方案8】:

              许多用户会因为您的应用在未运行时弹出推送通知而被关闭。 Android 市场和亚马逊市场会为您处理更新通知,因此除非您使用其他分发方式,否则可能不需要。

              另一种侵入性较小的方法是让您的应用在实际运行时检查更新。

              【讨论】:

                【解决方案9】:

                我曾经玩过这个项目,当时我正在创建一个具有类似要求的应用程序(我需要从远程硬件设备接收状态更新):

                http://tokudu.com/2010/how-to-implement-push-notifications-for-android/

                这里有一个关于它的 Stackoverflow 主题:

                Push Notifications in Android Platform

                另一个可能的答案是谷歌自己的 Android Cloud 框架,但我不知道它的现状。

                【讨论】:

                  【解决方案10】:

                  也许this 可以帮助你。

                  【讨论】:

                    【解决方案11】:

                    你可以用这个help

                    【讨论】:

                      【解决方案12】:

                      在 Android 中显示通知的标准方式是 Status Bar Notifications

                      如果您需要将通知从服务器推送到设备,您可能需要查看Cloud to Device Messaging

                      【讨论】:

                        猜你喜欢
                        • 1970-01-01
                        • 2016-06-12
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        相关资源
                        最近更新 更多