Два приложения Ionic 3 с одинаковым идентификатором приложения OneSignal + сервер Laravel

Я разрабатываю Uber-подобный проект с использованием Ionic 3. Есть приложение для пассажира и еще одно для водителя. Оба должны подписаться на уведомления OneSignal.

Проблема возникает, когда моему серверу Laravel необходимо доставить уведомление: оба приложения имеют одинаковый идентификатор игрока OneSignal (на основе устройства, а не идентификатора приложения), то есть уведомление, которое должен обрабатывать пассажир, может быть отправлено водителю. , если оба приложения установлены на одном устройстве.

Итак, мне нужна помощь, чтобы узнать, как лучше всего решить эту проблему:

  • Создайте еще одно приложение OneSignal и найдите способ заставить мой сервер Laravel выбирать, какой ONESIGNAL_APP_ID и ONESIGNAL_REST_API_KEY отправлять уведомления нужному приложению. (Практично, но я не уверен, что это возможно).

  • Создайте еще один идентификатор проигрывателя OneSignal для одного из приложений, изменив исходный код подключаемого модуля OneSignal. (Это решение звучит очень глупо, но решило бы все сразу)

  • Сделайте так, чтобы приложение 1 открывало приложение 2, если уведомление должно быть отправлено в приложение 2. Найдите способ передачи информации об уведомлении между приложениями (глубокие ссылки?) и заставьте приложение 2 обрабатывать полученную информацию так же, как это было исходное уведомление. (Необходимо заставить его работать как на Android, так и на iOS. Стоит ли оно того?)

  • Просто используйте службу для push-уведомлений, которая может отправлять уведомления на основе идентификатора приложения, и перенастройте сервер Laravel.

Какой из них будет лучшей альтернативой? Может есть еще один?


person Giovani de Quadros    schedule 10.10.2018    source источник
comment
Я иду с первым   -  person Hussein    schedule 10.10.2018


Ответы (1)


Мой совет — используйте теги. В приложении для водителей вы сделаете что-то вроде этого.

this.oneSignal.sendTag("driver", "true");
this.oneSignal.sendTag("passenger", "false");

и для пассажира:

this.oneSignal.sendTag("driver", "false");
this.oneSignal.sendTag("passenger", "true");
person Kilomat    schedule 11.10.2018
comment
Я уже использую теги, но когда я открываю приложение драйвера, пользователь OneSignal для моего устройства получает драйвер тега. Когда я открываю пассажирское приложение, тег меняется на пассажир для того же пользователя. Мне нужны два разных пользователя. - person Giovani de Quadros; 11.10.2018
comment
поэтому в этом случае вы можете отправить тег следующим образом. this.oneSignal.sendTag({appId: xxxxxxxx, пассажир: правда, водитель, ложь}); или у водителя должен быть другой телефон. потому что у вас будет тот же playerid - person Kilomat; 11.10.2018