0

Я собираюсь использовать GCM для Android и APNS для ios в своем приложении.push-уведомление DB management

на моей стороне сервера Я сохраняю в своей БД идентификатор устройства и идентификатор учетной записи каждого входа.

Когда пользователь выходит из системы я удалить эту запись, так что пользователь не будет получать его больше (и даже если он входит в системе с другой учетной записью на одном устройстве)

Сценария им думать о том, когда пользователь удаляет приложение, пока он все еще входит в систему. Это означает, что пользователь не прошел запрос на выход, который является запросом, который удаляет запись идентификатора устройства в моей БД.

Теперь пользователь снова устанавливает приложение, но входит в систему с другой учетной записью.

В моей БД у меня будет тот же идентификатор устройства с 2 идентификаторами учетной записи, что означает, что пользователь получит уведомления о том, что ему не принадлежит (его устройство будет получать уведомления для предыдущей зарегистрированной учетной записи).

Насколько я знаю, андроид получил идентификатор устройства для каждого приложения «экземпляр», поэтому у меня нет проблемы здесь (даже если сообщение будет отправлено на призрачное устройство, которое странно), но на ios я знаю, что идентификатор устройства вы отправить APNS является уникальным для каждого устройства ...

Нижняя линия -

ли я что-нибудь не так?

Решение Я думал о устанавливаете тайм-аут для устройства такого же, как тайм-аут входа в системе (еще чересстрочное время будет получать уведомление от 2 счета)

Тем не менее эта проблема выглядит очень тривиально, и что должно быть чистым решением.

ответ

0

Для iOS подход заключается в том, чтобы добавить ключ к NSUserDefaults, чтобы проверить, включено ли приложение в его первый запуск или нет.

При последовательных запусках, если указанный выше ключ присутствует, вы ничего не делаете, так как это не ваш первый запуск. Если ключ еще нет (первый запуск после установки), вы отправляете запрос с deviceid, который удаляет текущий deviceid из вашей БД сервера со всеми зарегистрированными в нем входами. Вы устанавливаете ключ в true, затем можете перейти к обычному входу. Это будет работать, только если устройство не изменится между установками.

Я думаю, что есть аналогичный механик для Android.

+0

Да, я тоже об этом думал, я думаю, это единственный способ. вручную вручную управлять им в моей БД в соответствии с переменной bool, посланной пользователем в случае новой установки. –

+0

После некоторой работы мой разработчик ios заявил, что он не может получить идентификатор устройства, если пользователь не одобрит подсказку push. Если это так, в случае, если пользователь не одобрил, я не буду иметь идентификатор устройства, чтобы он соответствовал моей БД и удалял его, то есть до тех пор, пока пользователь не одобрит его. сейчас, я пошлю толки к тому же идентификатору устройства (подталкивает к учетной записи перед деинсталляцией). Даже если яблоко знает, что приложение было удалено, и оно не отправляет их, то это очень неэффективно с моей стороны, чтобы отправить эти «призрачные толчки» Любые идеи? –

+0

@sharongur Я понимаю проблему, но на самом деле у меня нет идеи. Может быть, вариант будет Keychain. Он предлагает безопасное хранилище и будет сохраняться, даже если приложение будет удалено. Вы можете сохранить свой первый подтвержденный идентификатор устройства. Если при установке там уже есть один ID, повторно используйте его или отмените подписку и приступите к новой. – Templar