ほとんどのドキュメントでは、起動時にリモート通知を登録し、トークンを受信したら、他のアプリ固有の設定 (ユーザー、アプリ内プッシュ設定など) を使用してこれをサーバーにプッシュすることをお勧めします。ただし、次のコーナーケースの処理方法がわかりません。
ユーザーが接続せずにアプリを起動すると、トークンは受信されません。しばらくすると、接続が復元されます。ユーザーがアプリの設定を変更しようとすると、設定とトークンを含むサーバーへの投稿が促されます。ただし、トークンはまだ nil です。
代わりに、設定を投稿する前に毎回通知を登録する方がよいのではないでしょうか? 起動時にこのトークンを要求する必要はないように思われます。これは、必要とされない可能性があり、さらに悪いことに、必要なときに nil になる可能性があるためです。