我按照此推送通知tutorial。
当我完成教程时,我发现有两个类没有使用AuthenticationUtil
和MessageUtil
。
此外,Google Login,此链接似乎不可行。其次,这是Android设备或帐户的令牌ID?我认为推送通知是推送消息到Android设备的令牌ID。
另一方面,我发现bundle.putExtra(key, value)
,所有键都没有使用它。例如,将"app"
放在C2DMRegistrationReceiver()
但未获得密钥。
在这个sendRegistrationIdToServer()
中,似乎永远不会被召唤出来。
我对这个关于推送通知的教程感到困惑。
谁可以指导我或给我一些关于推送通知的可行教程或示例?
我希望亲们指出我的错误。
这是我的注册ID
public static final String[] REGISTRATION_ID = {
"APA91bFV6MwoAH0UNop69PZ2liKpSBUHSHenIuPzh44_6GdGKzVCLvoH_NM31eMZMVLZi-SAIFwP4iZaE72dSWkIh3GaD0RQYpPm9zO0ARWmnoxFyyyreL_KpQ9Qd_p0broclT12RhA4Ymk0cBT00CmpsbSHIwyxig",
"APA91bEwmxgvs7zNbKC4p0n4DoTEM73DTihnQgBOP8Gxhf2sVW-fgltugDgS1Fh2S4KvN1wQHbMNJEIzieJ9F1nNPqs3NWeKGbB7IBYpKJq4xmN4Z7uzkjZQQUKGD8jW--AwfQY5McINBto9GAL_87_u5WkIq-kx3g",
"APA91bH63Zgxn1X_MZ56UzrlRpffvmiLAIsqxvBUTMUHP2O_MT_VU9Ork_edXKHlml-PZSkjKEqdk8EKv5HvxbPdK1Vva3WtmqsPZfhXzEbtNIrwrqIvvRf7hL835rDc4t2E8EKUBj1dX2ta0OxY5pY3Xlhkyb1sBg",
"APA91bGqT5Wo6eUaMdqT5r9TlGbKSX6GN2W6r-RjrRXz5T5v3j87flcQRyfSajmMNGXuPVe-fwZydRmvyYu63tWnYohDmpJyKkXOxs8Vx6P_FplFQ__ufR_hekwqGOspeUc6bfc8fhbMPGN3Ft9l-bfrghJwwk79jw"};
Messageutil
public static int sendMessage(String auth_token, String registrationId,
String message, String title) throws IOException {
StringBuilder postDataBuilder = new StringBuilder();
postDataBuilder.append(PARAM_REGISTRATION_ID).append("=")
.append(registrationId);
postDataBuilder.append("&").append(PARAM_COLLAPSE_KEY).append("=")
.append("0");
postDataBuilder.append("&").append("data.payload").append("=")
.append(URLEncoder.encode(message, UTF8));
postDataBuilder.append("&").append("data.title").append("=")
.append(URLEncoder.encode(title, UTF8));
byte[] postData = postDataBuilder.toString().getBytes(UTF8);
// Hit the dm URL.
URL url = new URL("https://android.clients.google.com/c2dm/send");
HttpsURLConnection
.setDefaultHostnameVerifier(new CustomizedHostnameVerifier());
HttpsURLConnection conn = (HttpsURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type",
"application/x-www-form-urlencoded;charset=UTF-8");
conn.setRequestProperty("Content-Length",
Integer.toString(postData.length));
conn.setRequestProperty("Authorization", "GoogleLogin auth="
+ auth_token);
OutputStream out = conn.getOutputStream();
out.write(postData);
out.close();
int responseCode = conn.getResponseCode();
return responseCode;
}
private static class CustomizedHostnameVerifier implements HostnameVerifier {
public boolean verify(String hostname, SSLSession session) {
return true;
}
}
messageSender,和
public static void main(String[] args) throws IOException {
String token = AuthenticationUtil.getToken(SecureStorage.USER,
SecureStorage.PASSWORD);
for (int i = 0; i < ServerConfiguration.REGISTRATION_ID.length; i++) {
MessageUtil.sendMessage(token,
ServerConfiguration.REGISTRATION_ID[i], "12358",
"印尼羽賽:馬2單1雙止步入選賽");
System.out.println(ServerConfiguration.REGISTRATION_ID[i]
.toString());
}
System.out.println(token);
}
答案 0 :(得分:1)
您应该按照this教程进行android c2dm实现。
对于服务器,您可以使用任何东西,在互联网上提供一些代码示例。对于服务器,我使用名为“C2DM Sharp”的.NET库
这个过程很简单,就像......
C2DM的基本流程是...... Register Phone for C2DM - &gt; Get registrationID - &gt;将registrationID发送到服务器 - &gt;服务器使用google id获取身份验证令牌 - &gt; server use registrationID and auth token to send message.
答案 1 :(得分:1)
适用于Android的Google Cloud Messaging
重要提示:截至2012年6月26日,C2DM(Android Cloud to Device Messaging Framework)已正式弃用。这表示C2DM已停止接受新用户和配额请求。 C2DM不会添加任何新功能。但是,使用C2DM的应用程序将继续运行。鼓励现有C2DM开发人员迁移到新版本的C2DM,称为Google Cloud Messaging for Android(GCM)。有关更多信息,请参阅C2DM-to-GCM迁移文档。开发人员必须使用GCM进行新的开发。
请检查以下链接:
答案 2 :(得分:0)
请在此处查看我的问题:
C2DM server. Should we use OAuth now?
有一些信息和谷歌小组的链接与答案。
简而言之..
似乎OAuth2会起作用,但我没有找到任何可行的样本来实现
客户端登录有效,这是我困惑的地方。你需要:
其他一切就像在所有教程中一样。