Как создать токен регистрации Firebase - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь сгенерировать маркер регистрации firebase новым методом, но не могу сгенерировать это мой код ниже:

MyFirebaseInstanceIdService.java

public class MyFirebaseInstanceIdService extends FirebaseMessagingService {

@Override
public void onNewToken(String s) {
    super.onNewToken(s);

    FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() {
        @Override
        public void onSuccess(InstanceIdResult instanceIdResult) {

            String token = instanceIdResult.getToken();
            Log.d("Token",token);
        }
    });
  }
}

Manifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:dist="http://schemas.android.com/apk/distribution"
package="com.app.retrofitapp">

<dist:module dist:instant="true" />

<uses-permission android:name="android.permission.INTERNET" />

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <activity android:name=".Users"></activity>

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <service android:name=".MyFirebaseInstanceIdService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"></action>
    </intent-filter>
    </service>

</application>

В журнале cat с указанным выше методом не отображается токен. Кто-то, пожалуйста, дайте мне знать, что я делаю неправильно. Любая помощь будет принята.

СПАСИБО

Ответы [ 5 ]

1 голос
/ 17 июня 2019

Если вам нужен только токен fcm (не беспокойтесь об уведомлении), вам нужен только указанный ниже сервис в манифесте с действием INSTANCE_ID_EVENT ...

<service android:name=".fcm.FireBaseInstanceIdService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
    </intent-filter>
</service>

И после этого добавьте следующий код в свою деятельность (onCreate будетбудь хорошим)

FirebaseInstanceId.getInstance().getInstanceId()
                .addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
                    @Override
                    public void onComplete(@NonNull Task<InstanceIdResult> task) {
                        if (!task.isSuccessful()) {
                            Log.w(TAG, "Failed", task.getException());
                            return;
                        }

                        String token = task.getResult().getToken();
                        Log.i("FCM", "Current token=" + token);
                    }
                });

Там ты получишь свой токен.Надеюсь, это поможет.

1 голос
/ 17 июня 2019

Вы можете напрямую записать токен в свой метод onNewToken класса FireBaseMessagingService ...

@Override
    public void onNewToken(String s) {
        super.onNewToken(s);
        Log.i("FCM", "FCMMessagingService token=" + s);
        //store it in prefrence
        ApplicationPreferences.setFcmToken(getApplicationContext(), s);
    }

Не нужно вызывать ... (этот метод полезен, когда вы хотите токен в другом классе / деятельности)

FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener(new OnSuccessListener<InstanceIdResult>() {
        @Override
        public void onSuccess(InstanceIdResult instanceIdResult) {

            String token = instanceIdResult.getToken();
            Log.d("Token",token);
        }
    });

Подтверждение двух служб в файле манифеста

        <service android:name=".fcm.FireBaseMessagingService">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT"/>
            </intent-filter>
        </service>
        <service android:name=".fcm.FireBaseInstanceIdService">
            <intent-filter>
                <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
            </intent-filter>
        </service>
0 голосов
/ 17 июня 2019
@Override    
  public void onNewToken(String token) {   
    Log.d(TAG, "Refreshed token: " + token);
    Note - here you get the firebase token everytime. and you can save firebase token into your app or with your server.
  }
0 голосов
/ 17 июня 2019

Добавьте строку ниже в вашем классе приложения или в активности запуска.

Без инициализации токена экземпляра Firebase никогда не будет сгенерировано.

    FirebaseApp.initializeApp(getApplicationContext());
0 голосов
/ 17 июня 2019

В вашем случае это токен, попробуйте отладку на реальном устройстве.

 @Override
   public void onNewToken(String token) {
    Log.d(TAG, "Refreshed token: " + token);

   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...