Я пишу приложение в 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>