GCM 和 Smack API

Posted

技术标签:

【中文标题】GCM 和 Smack API【英文标题】:GCM and Smack API 【发布时间】:2013-05-25 12:21:21 【问题描述】:

我尝试使用 Smack API 连接到 GCM 的云连接服务器。我的代码:

ConnectionConfiguration config = new ConnectionConfiguration("gcm.googleapis.com","5235");
        config.setCompressionEnabled(true);
        config.setSASLAuthenticationEnabled(true);
        config.setSocketFactory(SocketFactory.getDefault());
        Connection conn = new XMPPConnection(config);
        conn.connect();
        conn.login(Config.GCM_SENDER_ID, Config.GCM_API_KEY);

但是我得到了连接失败错误和 XMPPException 错误。有什么想法吗?

【问题讨论】:

请添加更多信息。仅有代码是不够的。最好包含 XMPPException 的堆栈跟踪和类型以及一些日志输出。 您的项目 ID(又名发件人 ID)是否已被 Google 列入白名单? 【参考方案1】:

根据CCS documentation:

CCS 需要传输层安全 (TLS) 连接。这意味着 XMPP 客户端必须启动 TLS 连接。例如在 smack 中,你会调用 setSocketFactory(SSLSocketFactory),类似于“旧式 SSL”XMPP 连接和 https。

因此在您的代码中使用以下内容:

config.setSocketFactory(SSLSocketFactory.getDefault())

【讨论】:

以上是关于GCM 和 Smack API的主要内容,如果未能解决你的问题,请参考以下文章

使用 Smack 4.1.0 的 GCM XMPP 服务器 - 需要添加哪些 jar

当使用 Smack 4.1.0 API 作为 Google 的 GCM CCS 的 XMPP 客户端时,SecurityMode.required 不起作用

GCM XMPP - 启动 Web 应用程序服务器时出错

如何使用 XMPP 和 GCM 在 Android 中制作聊天应用程序

如何通过 GCM.send 在包中发送整数、布尔值

java中的XMPP服务器没有收到来自GCM服务器的所有消息