Android: Firebase Cloud Messaging не отправляет уведомления для сборки .apk - PullRequest
0 голосов
/ 18 декабря 2018

Push-уведомление работает, когда я подключаю телефон к Android Studio через USB-кабель, но когда я генерирую build .apk и устанавливаю его на телефон, приложение не получает push-уведомления.

Я новичокна android и пробуя push-уведомления в первый раз.

Код в Manifest.xml

<service
            android:name=".MyFirebaseInstanceIDService">
            android:stopWithTask="false">
            <intent-filter>

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

Код для расширения класса FirebaseMessagingService:

public class MyFirebaseInstanceIDService extends FirebaseMessagingService {
    @Override
    public void onNewToken(String s) {
        Log.e("NEW_TOKEN", s);
    }

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {

        Map<String, String> params = remoteMessage.getData();
        JSONObject object = new JSONObject(params);
        Log.e("JSON_OBJECT", object.toString());

        String NOTIFICATION_CHANNEL_ID = "Nilesh_channel";

        long pattern[] = {0, 1000, 500, 1000};

        NotificationManager mNotificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_CHANNEL_ID, "Dream",
                    NotificationManager.IMPORTANCE_HIGH);

            notificationChannel.setDescription("");
            notificationChannel.enableLights(true);
            notificationChannel.setLightColor(Color.RED);
            notificationChannel.setVibrationPattern(pattern);
            notificationChannel.enableVibration(true);

            mNotificationManager.createNotificationChannel(notificationChannel);
        }

        // to diaplay notification in DND Mode
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel channel = mNotificationManager.getNotificationChannel(NOTIFICATION_CHANNEL_ID);
            channel.canBypassDnd();
        }

        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, NOTIFICATION_CHANNEL_ID);

        notificationBuilder.setAutoCancel(true)
                .setColor(ContextCompat.getColor(this, R.color.colorAccent))
                .setContentTitle(getString(R.string.app_name))
                .setContentText(remoteMessage.getNotification().getBody())
                .setDefaults(Notification.DEFAULT_ALL)
                .setWhen(System.currentTimeMillis())
                .setSmallIcon(R.drawable.ic_action_name)
                .setAutoCancel(true);


        mNotificationManager.notify(1000, notificationBuilder.build());
    }
}

MainActivtiy.javaКласс не имеет ничего общего с Firebase.

Любое предложение будет оценено.Спасибо.

Ответы [ 3 ]

0 голосов
/ 18 декабря 2018

Пожалуйста, войдите в свою консоль Firebase и откройте свой проект, а затем найдите настройки проекта, такие как: enter image description here

, затем нажмите на настройку проекта и перейдите на страницу, на которой вынайдет ваше приложение и опцию добавления отпечатка пальца

Добавить отпечаток пальца

enter image description here

Просто добавьте туда свой отпечаток пальца и нажмите «Сохранить».

После добавления отпечатка пальца просто загрузите оттуда файл google-jsonconfig

Загрузите последний файл конфигурации

И поместите этот файл конфигурации в ваш проект и снова соберите ваше приложение.

Надеюсь, на этот раз все будет хорошо.

И, если вам понадобится дополнительная помощь для получения ключа SHA1 (Отпечаток пальца), пожалуйста, прокомментируйте еще раз, я постараюсь вам помочь.

Теперь, чтобы получить ваш релиз и отладку отпечатка пальца от Android Studio, следуйте этому:

1.Перейти к разделу Gradel, расположенному справа от васr android studio.

enter image description here

2.Вы найдете там: приложение нажмите на это и перейдите в Task-> android-> signatureReport

enter image description here

3. Двойной щелчокна signatureReport и подождите, пока ваш signatureRreport будет сгенерирован на вкладке Run, расположенной внизу андроид-студии.

4. Теперь у вас будет такой формат:

Variant: release
Config: release
Store: /home/hp/.android/release.keystore
Alias: AndroidReleaseKey
MD5: Your MD5 key here(xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx)
SHA1: Your fingerprint key here(xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx)
Valid until: Thursday, 20 August, 2048

Variant: debug
Config: debug
Store: /home/hp/.android/debug.keystore
Alias: AndroidDebugKey
MD5: Your MD5 key here(xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx)
SHA1: Your fingerprint key here(xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx)
Valid until: Thursday, 20 August, 2048

Из варианта выпуска скопируйте ключ SHA1 и добавьте его в базу данных Firebase.Я надеюсь, что это решит вашу проблему сейчас.

0 голосов
/ 20 декабря 2018

попробуйте выполнить следующие шаги

-> сгенерировать sha1 для файлов хранилища ключей отладки и выпуска

keytool -list -v -keystore {keystore_name} -alias {alias_name}

например:

keytool -list -v -keystore C:\Users\me\Desktop\release.jks -alias sample

-> Добавить эти sha1 в консоль Firebase

0 голосов
/ 18 декабря 2018

убедитесь, что на консоли добавлено обоих отпечатков пальцев - с клавиш debug и release.

, как вы это описали, это звучит довольно похоже только на debug ключ был добавлен ...

после добавления необходимо загрузить и обновить google-services.json, чтобы отразить это.

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