我按照http://developer.android.com/google/gcm/gs.html提供的演示进行了尝试,并成功地使试用应用程序GCMTrial正常工作。
但是,我尝试在现有应用程序上遵循相同的步骤,但并未成功。因此,我创建了一个全新的项目。即使如此,遵循完全相同的步骤,我仍然无法成功发送GCM消息。所以我尝试将GCMTrial重命名为所需的名称,但这也不起作用。
我通过主要活动注册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
}
Manifest: 清单文件:
Server Code: 服务器代码:
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 Error”...
我不知道我做错了什么...请帮帮我吧...