Невозможно запустить приложение при уведомлении в Android 10 ионном - PullRequest
0 голосов
/ 05 февраля 2020

Я разрабатываю гибридное приложение с использованием Ioni c. Приложение принимает входящие вызовы через SIP-связь и работает нормально ... за исключением Android 10 устройств.

Когда приложение работает в фоновом режиме / на переднем плане, оно работает как положено. Однако, когда я его убиваю, это не так.

Ожидаемое поведение при следующем:

  • Пользователь A вызывает пользователя B.
  • Пользователь B получает уведомление pu sh.
  • Это уведомление обрабатывается событием onNotification и запускает приложение.
  • Приложение регистрируется в SIP и при рукопожатии с сервером SIP.
  • Callkit запускает и устанавливает sh связь.

Текущее поведение (с Android 10):

  • Пользователь A вызывает пользователя B.
  • Пользователь B получает уведомление pu sh.
  • Он никогда не обрабатывается.

Следы в Android Studio:

2020-02-05 17:29:01.591 7064-7117/com.qv.app D/Push_FCMService: onMessage - from: XXXXXXXXXXX
2020-02-05 17:29:01.592 7064-7117/com.qv.app D/Push_FCMService: sender id = XXXXXXXXXXXX
2020-02-05 17:29:01.592 7064-7117/com.qv.app D/Push_FCMService: normalize extras
2020-02-05 17:29:01.592 7064-7117/com.qv.app D/Push_FCMService: key = content-available
2020-02-05 17:29:01.592 7064-7117/com.qv.app D/Push_FCMService: replace key content-available with content-available
2020-02-05 17:29:01.592 7064-7117/com.qv.app D/Push_FCMService: key = force-start
2020-02-05 17:29:01.592 7064-7117/com.qv.app D/Push_FCMService: replace key force-start with force-start
2020-02-05 17:29:01.592 7064-7117/com.qv.app D/Push_FCMService: key = priority
2020-02-05 17:29:01.592 7064-7117/com.qv.app D/Push_FCMService: replace key priority with priority
2020-02-05 17:29:01.592 7064-7117/com.qv.app D/Push_FCMService: key = msg
2020-02-05 17:29:01.592 7064-7117/com.qv.app D/Push_FCMService: replace key msg with msg
2020-02-05 17:29:01.592 7064-7117/com.qv.app D/Push_FCMService: key = notId
2020-02-05 17:29:01.593 7064-7117/com.qv.app D/Push_FCMService: replace key notId with notId
2020-02-05 17:29:01.593 7064-7117/com.qv.app D/Push_FCMService: key = title
2020-02-05 17:29:01.593 7064-7117/com.qv.app D/Push_FCMService: replace key title with title
2020-02-05 17:29:01.593 7064-7117/com.qv.app D/Push_FCMService: no locale found for key = title, error Value Qvadis of type java.lang.String cannot be converted to JSONObject
2020-02-05 17:29:01.593 7064-7117/com.qv.app D/Push_FCMService: key = coldstart
2020-02-05 17:29:01.593 7064-7117/com.qv.app D/Push_FCMService: replace key coldstart with coldstart
2020-02-05 17:29:01.593 7064-7117/com.qv.app D/Push_FCMService: key = visibility
2020-02-05 17:29:01.593 7064-7117/com.qv.app D/Push_FCMService: replace key visibility with visibility
2020-02-05 17:29:01.593 7064-7117/com.qv.app D/Push_FCMService: background
2020-02-05 17:29:01.593 7064-7117/com.qv.app D/Push_FCMService: message =[null]
2020-02-05 17:29:01.593 7064-7117/com.qv.app D/Push_FCMService: title =[TestTitle]
2020-02-05 17:29:01.593 7064-7117/com.qv.app D/Push_FCMService: contentAvailable =[1]
2020-02-05 17:29:01.593 7064-7117/com.qv.app D/Push_FCMService: forceStart =[1]
2020-02-05 17:29:01.593 7064-7117/com.qv.app D/Push_FCMService: create notification
2020-02-05 17:29:01.612 7064-7117/com.qv.app D/Push_FCMService: Using channel ID = PushPluginChannel
2020-02-05 17:29:01.620 7064-7117/com.qv.app D/Push_FCMService: stored icon=null
2020-02-05 17:29:01.620 7064-7117/com.qv.app D/Push_FCMService: stored iconColor=null
2020-02-05 17:29:01.620 7064-7117/com.qv.app D/Push_FCMService: stored sound=true
2020-02-05 17:29:01.620 7064-7117/com.qv.app D/Push_FCMService: stored vibrate=true
2020-02-05 17:29:01.620 7064-7117/com.qv.app D/Push_FCMService: no icon resource found - using application icon
2020-02-05 17:29:01.621 7064-7117/com.qv.app D/Push_FCMService: create actions: with in-line
2020-02-05 17:29:01.626 7064-7117/com.qv.app D/Push_FCMService: app is not running but we should start it and put in background
2020-02-05 17:29:01.627 7064-7117/com.qv.app I/Timeline: Timeline: Activity_launch_request time:6280056
2020-02-05 17:29:01.634 7064-7088/com.qv.app W/com.qvadis.app: Reducing the number of considered missed Gc histogram windows from 147 to 100

Это синтаксис, который я использую для уведомления:

{"registration_ids":["..xxxx..."], "data":{"visibility":"-1","content-available": "1", "force-start": "1", "priority": 2, "message": "msgTest", "notId": "24", "title": "titleTest"}, "priority":"high" }

Есть мысли? Кто-нибудь из вас сталкивался с этой проблемой раньше? Если кому-то из вас понадобится дополнительная информация, не стесняйтесь спрашивать, я с радостью отвечу.

Редактировать: Это руководство Android, касающееся ограничений на начало действий на Android 10 https://developer.android.com/guide/components/activities/background-starts

Большое спасибо заранее, Борха.

1 Ответ

0 голосов
/ 02 апреля 2020

Я уже нашел решение для этого.

В моем случае мне пришлось сделать две разные вещи:

  • Первым было включить принудительный запуск для тело уведомления
  • Второе - дать приложению разрешение на рисование поверх других приложений. Мне удалось это с помощью этого плагина: https://github.com/wryel/cordova-plugin-system-alert-window-permission. Он запрашивает разрешение SYSTEM_ALERT_WINDOW.

Благодаря этим двум вещам я смог запустить приложение и показать интерфейс вызова Cordova.

...