Android Gcm 推送时,第一次获取到registrationID为null的问题解决

     之前一直没注意到,在使用谷歌gcm消息推送服务时,第一次运行,注册谷歌服务,拿到的registrationID是空的,导致传给后台服务就是空的,无法接收到信息,大概原因是你向谷歌注册服务,要想立马获取registrationID的话,是不确定的,你需要启动一个线程,尝试执行几次,知道获取到的registrationID不为空,再传给后台服务,如下代码:给遇到相同问题的同学一个建议,谢谢阅读

new Thread() {
	@Override
	public void run() {
		int time = 30;
		while (time > 0) {
		time--;
                //registrationID不一定立即返回给你,你需要开启线程去查询,知道不为空为止
		regId = GCMRegistrar.getRegistrationId(LoginActivity.this);

		if (!(regId.equals("") || regId == null)) {
			// 1 表示 iPhone 2 表示android
			String groupName = APIDoc.getUserDocCaptain().getGroupName4Account(account);
			String deviceId = ((TelephonyManager) getSystemService(TELEPHONY_SERVICE)).getDeviceId();
			TradeResult tradeResult = TradeAPI.getInstance().setRegistDeviceID(ClientAPI.getAeid(),String.valueOf(account), groupName, regId, 2, deviceId,ConfigurationUtil.getInstance().getVersion());//将registrationID传给后台

			if (tradeResult.isSucceed()) {
				System.out.println("-----" + time);
				return;
			}
		}

		try {
			sleep(1000 * 3);
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
		}

	}
}.start();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值