现在是这么个情况,我自己的酷派5891能够绑定云推送,但是公司的测试机红米却无法绑定云推送。
1、经查看代码,发现百度接收信息类:MyPushMessageReceiver中的onBind()函数根本没有执行。主函数在startWork()之后,返回的绑定信息应该通过onBind()接收,可是本程序根本就没进到onBind()函数中,这是为什么?
2、在百度云推送官方论坛中发布问题,得到的回答是:您是否使用了最新版本,如果不是,请下载最新sdk尝试。我就尝试了最新的SDK,也不好使。
3、咋整,尝试了多个手机,发现都是绑定不上。
4、把百度云推送的demo安装到红米,却发现好使,能够执行onBind()。然后再回去执行实习实训系统,竟然能够执行onBind()方法了。
5、了解一下百度云推送api,发现利用百度云推送sdk生成的app,他们都共用一个线程来接收信息。这就好办了,这样就能分析出应该是其app把这个,线程打通了,所以实习实训系统就能够绑定成功了。
6、所以分析出大概原因:实习实训系统的配置哪里不对,或者上下文环境不对。导致那个线程没有成功被打通。
7、分析一下这个app的配置androidMenifest.xml文件。果然在最后一行发现有一条service被注释:
<!-- <service
android:name="com.baidu.android.pushservice.PushService"
android:exported="true"
android:process=":bdservice_v1" >
<intent-filter >
<action android:name="com.baidu.android.pushservice.action.PUSH_SERVICE"/>
</intent-filter>
</service> -->
8、解开之后,就能够绑定成功了。