3

我想使用 Phonegap 在 Android 中实现推送通知。我已经使用https://github.com/marknutter/GCM-Cordova成功创建了一个应用程序。

我还使用https://code.google.com/apis/console/创建了我的应用程序 ID 和发件人 ID 。

谁能建议我应该将这些密钥放在我的项目中的什么位置?

4

3 回答 3

0

在此处查看 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());
    }
}
于 2012-11-28T07:42:05.540 回答
0

我也使用插件。

不确定应用程序ID,但您在注册函数中传递的发送ID:

GCM.register(STRING_YOUR_SENDER_ID, "GCM_Event", GCM_Success, GCM_Fail );
于 2012-11-28T07:07:35.230 回答
0

使用插件

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/

于 2016-06-15T16:43:31.690 回答