http://developer.android.com/google/gcm/gs.htmlでデモを行い、試用版GCMTrialが正しく動作するようになりました。Android GCMエラーです。クライアントが登録されている場合、サーバは登録されていません
しかし、私は既存のアプリケーションで同じ手順を実行しようとしましたが、機能しませんでした。だから私はまったく新しいプロジェクトを作った。しかし、同じ正確な手順を実行しても、GCMにメッセージを正常に送信することができませんでした。そこで、GCMTrialの名前を必要な名前に変更しようとしましたが、それも機能しません。
私が主な活動を通じてGCMに登録すると、次のログを取得:
12-19 21:30:13.102: V/GCMRegistrar(15889): Registering receiver
12-19 21:30:13.112: D/GCMBaseIntentService(15889): handleRegistration: registrationId = XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX, error = null, unregistered = null
12-19 21:30:13.112: D/GCMRegistrar(15889): resetting backoff for com.XXX.XXX
12-19 21:30:13.117: V/GCMRegistrar(15889): Saving regId on app version 1
をしかし、私はGCMメッセージを送信しようとすると、それは次のようなエラーに
[ errorCode=NotRegistered ]
クライアントコードを返します。
public class MainActivity extends Activity {
TextView tve;
String TAG = "GCMTrial";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
GCMRegistrar.register(this, "XXXXXX");
Log.v(TAG, "Reg");
} else {
Log.v(TAG, "Already registered");
}
}
GCMIntentService :
public class GCMIntentService extends GCMBaseIntentService {
@Override
protected void onError(Context arg0, String arg1) {
// TODO Auto-generated method stub
}
@Override
protected void onMessage(Context arg0, Intent arg1) {
// TODO Auto-generated method stub
Log.d("GCM", "RECIEVED A MESSAGE");
// Get the data from intent and send to notificaion bar
}
@Override
protected void onRegistered(Context arg0, String arg1) {
// TODO Auto-generated method stub
}
@Override
protected void onUnregistered(Context arg0, String arg1) {
// TODO Auto-generated method stub
}
}
マニフェスト:
サーバコード:それは私が狂いそうさ
System.out.println("Sending GCM");
String key = "XXX"; //Server API key taken from the site
clientID = "XXXXXXXXX"; // copied from the logs
Sender sender = new Sender(key);
Message message = new Message.Builder().build();
Result result = sender.send(message, clientID, 1);
System.out.println(result.toString());
...それはAndroid携帯電話に登録されたとしても、GCMIntentServiceクラスのonRegisteredメソッドを呼び出して、示して..しかし、私がメッセージを送信しようとすると、それをフラグ「NotRegisteredエラー」... 私はイムが間違っているのか知ってはいけない...私を助けてください、みんな....
私は何が起こっているのか分かりません。 しかし、アンドロイドのGCMエキストラを再インストールして、まったく新しいアプリケーションを作成しましたが、今度はこれが動作します! :) 私は使用しました MulticastResult result = sender.send(message、devices、5);結果result = sender.send(message、clientID、1)の代わりに ; これは問題だったのですが、今は正常です...! – user1657709
私はあなたが既に新しい登録IDを要求しているため、あなたがインストールした後にあなたがそれを得ている理由を考える。 – neferpitou