Ioni c 2+ Cordova OneSignal NotificationExtenderService - PullRequest
0 голосов
/ 29 февраля 2020

Я пишу приложение в Ioni c 3, которое использует плагин Cordova OneSignal (onesignal-cordova-plugin 2.8.4).

Сценарий: приложение убито и пу sh уведомление получено: мне нужно знать, что уведомление было получено ПЕРЕД щелчком по уведомлению или открытию приложения.

План состоит в том, чтобы написать код, который запускается сразу после получения уведомления и отправит сообщение " квитанция "на главный сервер. Это происходит только в том случае, если приложение Ioni c работает в фоновом режиме или открыто. Если приложение Ioni c «убито», код не запускается.

Я выполнил шаги на этом посте , чтобы расширить NotificationExtenderService. Мне удалось добавить созданный мной файл Java в файл AndroidManifest. xml, и компилятор, похоже, нашел его. Я получаю следующую ошибку:

[cordova]    protected boolean onNotificationProcessing(OSNotificationReceivedResult receivedResult) {
[cordova]                                               ^
[cordova]   symbol:   class OSNotificationReceivedResult
[cordova]   location: class NotificationExtenderExample

Мой файл NotificationExtender. java (этот файл находится на платформах \ android \ app \ src \ main \ java \ com \ plugin \ gcm \ NotificationExtenderExample. java )

import android.support.v4.app.NotificationCompat;
import com.onesignal.OSNotificationPayload;
import com.onesignal.NotificationExtenderService;
import java.math.BigInteger;

public class NotificationExtenderExample extends NotificationExtenderService {
   @Override
   protected boolean onNotificationProcessing(OSNotificationReceivedResult receivedResult) {
      OverrideSettings overrideSettings = new OverrideSettings();
      overrideSettings.extender = new NotificationCompat.Extender() {
         @Override
         public NotificationCompat.Builder extend(NotificationCompat.Builder builder) {
            // Sets the background notification color to Green on Android 5.0+ devices.
            return builder.setColor(new BigInteger("FF00FF00", 16).intValue());
         }
      };

      OSNotificationDisplayedResult displayedResult = displayNotification(overrideSettings);
      Log.d("OneSignalExample", "Notification displayed with id: " + displayedResult.androidNotificationId);

      return true;
   }
}

Я добавил следующий код в мой AndroidManifest. xml (этот файл находится на платформах \ android \ app \ src \ main \ AndroidManifest. xml)

    <service android:exported="false" android:name=".NotificationExtenderExample" android:permission="android.permission.BIND_JOB_SERVICE">
        <intent-filter>
            <action android:name="com.onesignal.NotificationExtender" />
        </intent-filter>
    </service>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...