在我的Android应用中,我使用Firebase
通知。据我所知,如果用户没有安装Google Play Services
或配置正确,则无法接收通知。我有两个问题:
1-我说的是真的吗?如果Google Play Services
未正确配置,用户无法接收Firebase通知吗?
2-我使用此方法检查用户是否有Google Play services
,然后在Topics
注册用户,依此类推......:
GoogleApiAvailability api = GoogleApiAvailability.getInstance();
int resultCode = api.isGooglePlayServicesAvailable(getApplicationContext());
if (resultCode == ConnectionResult.SUCCESS) {
//register in a topic
FirebaseMessaging.getInstance().subscribeToTopic("all");
}else{
alert("You have to install Google Play Services")
}
这种方法是对的吗?我的主要目标是,如果用户无法注册Firebase
消息,请了解原因并且不会出现任何错误。实际上,注册最大用户以接收Firebase
消息没有任何问题。由于Google Play服务,我不希望自己的应用崩溃...
实现这些目标的最佳做法是什么?
答案 0 :(得分:3)
这个答案是基于我的经验。
1-我说的是真的吗?如果Google Play服务配置不正确,则用户无法接收Firebase通知?
是。如果用户的手机没有Google Play服务,用户将不会收到任何通知,如果安装的Google Play服务已过期,用户也不会收到通知。
2-我使用此方法检查用户是否拥有Google Play服务,然后在主题中注册用户等等......:
这种方法对我来说似乎不错。您可以显示更新Google Play服务的提醒或安装它。尝试以下代码
GoogleApiAvailability api = GoogleApiAvailability.getInstance();
int resultCode = api.isGooglePlayServicesAvailable(getApplicationContext());
if (resultCode == ConnectionResult.SUCCESS) {
//register in a topic
FirebaseMessaging.getInstance().subscribeToTopic("all");
}else{
//Any random request code
int PLAY_SERVICES_RESOLUTION_REQUEST = 1000;
//Google Play Services app is not available or version is not up to date. Error the
// error condition here
if (api.isUserResolvableError(result)) {
api.getErrorDialog(this, resultCode ,
PLAY_SERVICES_RESOLUTION_REQUEST).show();
}else{
alert("You have to install Google Play Services")
}
}
在您的提醒中,您可以要求用户从Playstore或浏览器下载Google Play服务。大多数情况下else
部分仅在设备不支持Google Play服务时触发。因此,在这种情况下,最好为此设备禁用FCM。
String appPackageName = "com.google.android.gms";
try {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
} catch (android.content.ActivityNotFoundException anfe) {
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
}