问题详述
在Activity中执行了推送的初始化逻辑,SDK的接入按照集成文档操作确认无误,为什么推送消息接收不到,或者有时能接收到有时接收不到?相关初始化代码如下:
public class MyActivity extends Activity {
@override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initCloudChannel(getApplicationContext());
......
}
......
}
问题原因
推送SDK为了提高推送到达率做了进程保活,除了应用进程之外,还有辅助进程channel。在诸如应用退到后台,设备锁屏或者应用杀死等场景都是通过channel进程接收推送消息的。而channel进程的正常工作是依赖于channel的成功初始化。如果您在Activity中执行了推送的初始化逻辑将导致channel进程无法完成初始化操作。channel进程无法正常工作将严重影响推送到达率。
解决方法
将推送初始化逻辑移至Application中,并保证主进程和channel进程均可以执行相关代码:
public class MyApplication extends Application {
@override
public void onCreate() {
super.onCreate();
if(如果是主进程或channel进程) {
initCloudChannel(this);
}
}
......
}
文档内容是否对您有帮助?