я использую onesignal первый раз. Я уже провел слишком много времени на R&D. Но выход практически равен нулю. Итак, здесь я иду с моими требованиями.
Я успешно разработал демо. Но это не зависит от пользователя. Если я запускаю уведомление, все устройство получает уведомление. Итак, вот мои вопросы.
Если кто-нибудь может показать мне базовый пример, это будет оценено. Я со стороны PHP. Это будет хорошо для меня, если я получу ответ с точки зрения разработчика PHP. Я уже спрашивал этот вопрос на стеке потока Но ответ был с точки зрения Android. Но я думаю, что он не знает, что на стороне сервера мы должны управлять всеми устройствами. Так что я не получил намного больше от этого ответа.
Onesignal — это хорошая платформа для отправки push-уведомлений на различные типы устройств. Я использую то же самое в моем проекте. Что я делаю, так это то, что всякий раз, когда пользователь входит в систему, я получаю токен устройства от клиента и создаю пользователя в сигнале с помощью его API. (Я полагаю, вы знаете, как настроить сигнал с номером проекта Google & ключ API Google для Android, P12 файлы для IOS, и т.д …)
Перспектива Android:
Таким образом, для одного и того же ключа API Google onesignal всегда будет возвращать один и тот же идентификатор игрока, даже если вы снова удалите и создадите пользователя.
В большом проекте разработчики должны ожидать, что пользователь может войти в систему на разных устройствах (Android, IOS и т. Д.). Таким образом, пользователь может иметь несколько токенов, как и идентификатор игрока. Еще одно требование, которое вы предъявляете, заключается в том, что пользователь не хочет получать уведомления, если он не вошел в систему.
Поэтому, учитывая все ваши требования, я могу предложить вам одну структуру таблиц MySQL для хранения пользовательских данных.
Одна таблица для хранения типа устройства (необязательно)
-id
-device_type
Один для хранения токенов и идентификаторов игроков
-token_id
-user_id
-device_id
-device_token
-onesignal_player_id
-subscription
Эти две таблицы необходимы для работы с сигналом.
Случай 1:
Всякий раз, когда пользователь пытается войти в систему, сначала проверьте таблицу токенов. Выясните, есть ли другой пользователь с таким же данным токеном (что означает, что другой пользователь вошел в систему с того же устройства). Удалите такой токен, если он есть. Затем создайте нового игрока в onesignal и сохраните детали в таблице токенов. Пометить подписку как 1, которая подписана на уведомление. Всякий раз, когда пользователь выходит из системы, пометьте подписку на 0, которая не подписана на уведомление.
Дело 2:
Всякий раз, когда пользователь входит в систему, проверьте токен, присутствует ли он уже в таблице. Если да, и владелец токена такой же, просто пометьте подписку как 1. Чтобы он получал дальнейшие уведомления.
Дело 3:
Когда пользователь использует другое устройство для входа (несколько устройств одновременно), токен gcm наверняка будет другим. Поэтому сохраните его как еще один токен для того же пользователя и отметьте подписку как 1. Итак, оба устройства получат уведомление.
В конце, перед отправкой уведомлений, извлеките все токены того конкретного пользователя, на которого подписана, и отправьте уведомление всем за один раз. Это решит вашу проблему.
Я знаю, что это может быть немного запутанным. Но не волнуйтесь, мы можем это исправить.
Этот урок поможет вам, которые отправляют уведомления с PHP.