На счет второго
Подпись и отпись на топики идет через тогл
Единственный вариант, который придумал - сделать тоглы неактивными, пока запрещены уведомления
А снизу добавлю подпись, почему тоглы не кликабельны
Так и делается, ещё при изменении тогла часто вываливают Алерт типа «у вас пуши запрещены, разрешите в настройках» и кнопка «перейти в настройки» и «отмена», по первой кнопке можно редиректнуть пользователя куда надо
Главное на applicationDidBecomeActive проверять изменилось разрешение на пуши или нет, чтоб нормально логика отрабатывала)
Ну и в целом это логично, что если пользователь закрыл приложение сразу же, и в вывалившемся алерте разрешил уведомления на пуши, он ничего не получит до перезахода, потому что его токен не направится никуда. Это норм. Главное чекать его пуши при каждом старте и рулить логикой.
Подписывать на топики тоже лучше из колбека разрешения на пуши, чтобы не быть привязанным к показу какого-то экрана, тк если разрешение уже дано, то колбек все равно вызовется с сакцессем