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());
}
}
プラグインを使用する
cordova plugin add phonegap-plugin-push --variable SENDER_ID="XXXXXXX"
xxxxxx を送信者 ID に置き換えます。送信者 ID は、Google コンソールのプロジェクト 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/
プラグインも使っています。
アプリ ID についてはわかりませんが、登録用の関数で渡す送信 ID は次のとおりです。
GCM.register(STRING_YOUR_SENDER_ID, "GCM_Event", GCM_Success, GCM_Fail );