【问题标题】:GCM java server exampleGCM Java 服务器示例
【发布时间】:2014-03-07 21:29:17
【问题描述】:

有人有 GCM java 3rd Party Server 示例的链接吗?我无法理解如何实现它。在http://developer.android.com/google/gcm/server.html,我找不到完整的例子。

【问题讨论】:

标签: android google-cloud-messaging


【解决方案1】:

最简单的方法是使用gcm-server.jar(您可以从here 获得)。

那么您需要发送 GCM 消息的代码将如下所示:

Sender sender = new Sender(apiKey);
Message message = new Message.Builder()
    .addData("message", "this is the message")
    .addData("other-parameter", "some value")
    .build();
Result result = sender.send(message, registrationId, numOfRetries);

【讨论】:

  • 如何通过配置ip/port等设置是测试还是生产?
  • @handicop 我不确定你在问什么。 GCM 在测试和生产之间没有区别(与 Apple 推送通知不同)。 Sender 类被硬编码以将请求发送到 GCM HTTP 端点 url。
  • 我明白了。我目前正在查看 GCM CCS(XMPP),我可以在其中配置端点。对于 CCS,我想我不应该使用 gcm-server.jar 或 Sender 类,相反,我想我应该查看 GoogleCloudMessaging API。
  • 如何继续运行监听上游消息?
  • 我没有在给定的链接上找到 gcm-server.jar 但在 Maven 存储库中找到:mvnrepository.com/artifact/com.google.gcm/gcm-server/1.0.0
【解决方案2】:

我想分享一个更好的方法来确认消息是否成功传递。我们可以使用RestTemplateHTTPPost 来做到这一点。

我将展示我们如何使用 gcm.jar 来做到这一点

public class GCMJarGCM {
    public static final String GCM_API_KEY = "Get this API key from Google Developer Console";
    public static final String MESSAGE_VALUE = "Hello, Sending Notifications using GCM";    
    public static final String MESSAGE_KEY = "message";
    public static final String REG_ID = "This you'll get once you register on GCM";

    public static void main(String[] args) throws IOException {
        Sender sender = new Sender(GCM_API_KEY);

        ArrayList<String> devicesList = new ArrayList<String>();
        devicesList.add(REG_ID);

        Message message = new Message.Builder().timeToLive(30)
                .delayWhileIdle(true).addData(MESSAGE_KEY, MESSAGE_VALUE).build();

        MulticastResult result = sender.send(message, devicesList, 1);
        sender.send(message, devicesList, 1);
        System.out.println(result.toString());
    }
}

您将看到如下输出:

MulticastResult(multicast_id=4951949299732552396,total=1,success=1,failure=0,canonical_ids=0,results: [[ messageId=0:1445408305351488%2a748ce7f9fd7ecd ]]

如果你想使用 HTTPPost 或 RestTemplate 那么你需要使用 EndPoint:https://android.googleapis.com/gcm/send

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多