我想使用 Phonegap 在 Android 中实现推送通知。我已经使用https://github.com/marknutter/GCM-Cordova成功创建了一个应用程序。
我还使用https://code.google.com/apis/console/创建了我的应用程序 ID 和发件人 ID 。
谁能建议我应该将这些密钥放在我的项目中的什么位置?
我想使用 Phonegap 在 Android 中实现推送通知。我已经使用https://github.com/marknutter/GCM-Cordova成功创建了一个应用程序。
我还使用https://code.google.com/apis/console/创建了我的应用程序 ID 和发件人 ID 。
谁能建议我应该将这些密钥放在我的项目中的什么位置?
在此处查看 GCM 文档,这是一个代码片段(我对文档中的原始示例进行了一些修改):
public class GCMIntentService extends GCMBaseIntentService {
private static final String SENDER_ID = ""; // Your project ID from the API Console
public GCMIntentService() {
super(SENDER_ID);
}
@Override
public void onCreate() {
super.onCreate();
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
GCMRegistrar.register(this, SENDER_ID);
} else {
Log.v(TAG, "Already registered");
}
}
@Override
protected void onError(Context context, String error) {
}
@Override
protected void onMessage(Context context, Intent message) {
//String value = message.getExtras().getString("message");
}
@Override
protected void onRegistered(Context context, String resId) {
// You should save the resId to use it when sending a message from your server
}
@Override
protected void onUnregistered(Context arg0, String msg) {
// Delete the resId from your server
}
}
要对其进行测试,您首先需要调用上述服务以将您的设备注册到 GCM 服务(并获取您将在发送消息时使用的注册 ID),您可以执行以下操作:
Intent registrationIntent = new Intent(
"com.google.android.c2dm.intent.REGISTER");
registrationIntent.putExtra("app",
PendingIntent.getBroadcast(context, 0, new Intent(), 0));
// registrationIntent.putExtra("sender", "Your sender id"); // Better than keep the sender id hard coded in the service
context.startService(registrationIntent);
要发送消息,您可以有一个简单的 Java 应用程序,如下所示(您也可以使用其他语言进行操作):
public static void sendMessage(String msg) throws IOException {
String myApiKey = "Your Browser API Key";
String regId = "Registeration id"; // the value you received in
// onRegistered() in the above
// onRegistered class
Sender sender = new Sender(myApiKey);
Message message = new Message.Builder().addData("message", msg).build();
Result result = sender.send(message, regId, 5); // 5 is the maximum number of trials to deliver your message
if (result.getMessageId() != null) {
System.out.println("Message sent");
String canonicalRegId = result.getCanonicalRegistrationId();
if (canonicalRegId != null) {
// This means that the registration id got updated, so use the new one for future messages
System.out.println("canonicalRegId: " + canonicalRegId);
}
} else {
System.out.println("error: " + result.getErrorCodeName());
}
}
我也使用插件。
不确定应用程序ID,但您在注册函数中传递的发送ID:
GCM.register(STRING_YOUR_SENDER_ID, "GCM_Event", GCM_Success, GCM_Fail );
使用插件
cordova plugin add phonegap-plugin-push --variable SENDER_ID="XXXXXXX"
用您的发件人 ID 替换 xxxxxx 发件人 ID 是谷歌控制台中的项目 ID/项目编号
在您的 javascript 中添加以下代码以进行注册
var push = PushNotification.init({
android: {
senderID: "XXXXXXXX" //add your sender id here
},
ios: {
alert: "true",
badge: "true",
sound: "true"
},
windows: {}
});
push.on('registration', function(data) {
consol.log(data.registrationId); //this function give registration id from the GCM server if you dont want to see it please comment it
document.getElementById("gcm_id").value= data.registrationId; //showing registration id in our app. If it shows our registration process is suscess
//$("#gcm_id").val(data.registrationId); if you are using jquery
});
如果您想了解如何在科尔多瓦实现推送通知的更多详细信息,请通过以下链接
http://phonegaptut.com/2016/05/31/how-to-send-push-notifications-in-phonegap-application/