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 不起作用