Error de integración firebase: los servicios de Google Play están desactualizados
Estoy intentando integrar Firebase en mi aplicación android. Estoy usando este tutorial . He actualizado mi gestor sdk, agregó google-services.json
e hizo todo lo mencionado en el sitio web. Todavía estoy recibiendo este error de Google Play services out of date
. Quiero obtener el ID de token del dispositivo para poder enviarlo al servidor en la actividad de inicio de sesión. ¿Hay algo más que necesito hacer para obtener el ID de token del dispositivo?
Manifiesto
- Firebase Expandable Notification Mostrar imagen cuando la aplicación está en segundo plano
- Androide. GcmNetworkManager en Firebase SDK?
- ¿Las notificaciones no siempre se reciben por teléfono?
- Error al resolver 'com.google.firebase: firebase-messaging: 11.0.4' en Android Studio 2.3.3
- Cuadrado gris como icono de notificación mediante notificaciones de Firebase
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="MY_PACKAGE"> <uses-permission android:name="android.permission.INTERNET"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:launchMode="singleTask" android:theme="@style/MyTheme"> <activity android:name=".SplashActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".MainActivity" /> <activity android:name=".LoginActivity" android:theme="@style/AppTheme" android:label="@string/signin"/> <activity android:name=".RegisterActivity" android:theme="@style/AppTheme" android:label="@string/cac"/> <service android:name=".services.RegistrationIntentService" android:exported="false"/> <service android:name=".services.FCMMessageHandler" android:exported="false" > <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT" /> </intent-filter> </service> <service android:name=".services.MyInstanceIDListenerService" android:exported="false"> <intent-filter> <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/> </intent-filter> </service> </application> </manifest>
App build.gradle
apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "MY_PACKAGE" minSdkVersion 11 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.2.1' compile 'com.android.volley:volley:1.0.0' compile 'com.google.firebase:firebase-messaging:9.2.1' compile 'com.google.android.gms:play-services:9.2.1' compile 'com.android.support:multidex:1.0.1' } apply plugin: 'com.google.gms.google-services'
Servicio
public class RegistrationIntentService extends IntentService { // abbreviated tag name private static final String TAG = "RegIntentService"; public static final String SENT_TOKEN_TO_SERVER = "sentTokenToServer"; public static final String FCM_TOKEN = "FCMToken"; public RegistrationIntentService() { super(TAG); } @Override protected void onHandleIntent(Intent intent) { // Make a call to Instance API FirebaseInstanceId instanceID = FirebaseInstanceId.getInstance(); String senderId = getResources().getString(R.string.gcm_defaultSenderId); SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); try { // request token that will be used by the server to send push notifications String token = instanceID.getToken(); Log.d(TAG, "FCM Registration Token: " + token); System.out.println("Token:" + token); sharedPreferences.edit().putString(FCM_TOKEN, token).apply(); // pass along this data sendRegistrationToServer(token); } catch (Exception e) { e.printStackTrace(); Log.d(TAG, "Failed to complete token refresh", e); // If an exception happens while fetching the new token or updating our registration data // on a third-party server, this ensures that we'll attempt the update at a later time. sharedPreferences.edit().putBoolean(SENT_TOKEN_TO_SERVER, false).apply(); } } private void sendRegistrationToServer(String token) { // send network request // if registration sent was successful, store a boolean that indicates whether the generated token has been sent to server SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); sharedPreferences.edit().putBoolean(SENT_TOKEN_TO_SERVER, true).apply(); } }
Logcat
07-15 15:02:59.004 24479-24707/com.sam.bidnextjob I/FA: Tag Manager is not found and thus will not be used 07-15 15:02:59.028 24479-24707/com.sam.bidnextjob W/GooglePlayServicesUtil: Google Play services out of date. Requires 9256000 but found 9083234 07-15 15:02:59.029 24479-24479/com.sam.bidnextjob W/FA: Service connection failed: ConnectionResult{statusCode=SERVICE_VERSION_UPDATE_REQUIRED, resolution=null, message=null} 07-15 15:03:59.033 24479-26561/com.sam.bidnextjob W/FA: Tasks have been queued for a long time
- FCM Android - ID de mensaje nulo
- ¿Es posible usar la mensajería Firebase con Google Analytics en Android?
- Icono de notificación con el nuevo sistema de mensajería de Cloud Firebase
- ANR con FCM y construir variantes con applicationIdSuffix
- Cómo manejar la notificación de Fire Base cuando la aplicación está en primer plano
- Implementación de FCM con XMPP usando Smack para Android
- Error "tipo de retorno int no es compatible con Intent" cuando se utiliza la clase FirebaseMessagingService
- Android no puede extender el servicio de mensajería de Firebase
Creo que este es un problema lateral del dispositivo. Mirando su logcat:
Los servicios de Google Play están desactualizados. Requiere 9256000 pero encontrado 9083234
Parece que tu dispositivo no está ejecutando la versión requerida de los servicios de Google Play. Prueba a actualizar los servicios de Google Play en el dispositivo y esto debería solucionar este problema.
Además del servicio de Google Play, también es necesario actualizar el repositorio de Google a la más reciente. No sé por qué no hay documentación sobre esto, pero la actualización de google repositorio resolver mi problema.