【Swift4】iOSでプッシュ通知の設定状況を確認したかった

研究
Skyler Ewing at Pexels
この記事は約2分で読めます。

この記事は2年前の記事です。当時の情報、理解に基づいておりますのでご留意ください

はじめに

プッシュ通知でUITabBarのボタンとかに赤いバッチをつけたり、
ステータスの変更を反映したいとか。
なので通知を切られてると激しく困るのです。

まずこれを試しました。

[Swift] iOS でプッシュ通知の有効・無効を判定する - Qiita
iOS8 以降とそれ以外で使用する API が異なります。プッシュ通知を許可しているかどうかを判定するメソッドをつくってみました。 class var isPushNotificationEnable: Bool { ...

バージョン違いで怒られた…珍しくxcodeのfix提案でフィックスできたけど、
設定→通知→アプリごとの通知で意図的に設定したのが、反映できない。
そこを監視できないと正直意味がないんだ。

isRegisteredForRemoteNotifications が正常に動かなかったときの対処 - NANAIRO
PUSH 通知が有効/無効をアプリ上で表示(UISwitch等)して有効にしようとした場合にアプリの設定画面に遷移して有効にしてもらう。 といったことを実装することがあるかもしれません。 実装は「 iOS でプッシュ通知の有効・無効を判定する」を見てもらえれば分かりやすいと思います。 それが意図した通りに動かないケース...

うーん…AppDelegateじゃないと、ダメ?
最終的に

ローカル通知が許可されているか判定する|teratail
初回起動時に通知を許可するか設定した後、2度目以降の起動時に通知が設定されていない場合は設定画面に誘導する機能を実装しています。 ▼初回起動時に通知の設定を行う let settings = UIUserNotificationSettings(forTypes: [.Sound,.Alert,

これをバージョンで読み替えて

[Swift]Swift2.0からUIUserNotificationTypeのoption設定が変わった - Qiita
UIUserNotificationTypeの"|"でエラーした Swift1.2まではUIUserNotificationTypeのoption設定は"|"で区切ることによって複数設定していた。が、Swift2.0に更新したら...

フラグがわからなかったのでここで補完

完成品

if (UIApplication.shared.currentUserNotificationSettings?.types.contains( UIUserNotificationType.alert))! {
} else {
// アラートメッセージ表示、別途リサーチしてください
}

失敗

if UIApplication.shared.currentUserNotificationSettings?.types != UIUserNotificationType.alert {
// イコールつけるには型の食い違いで怒られそうなんだけど怒られなかった
}

これで更に、最初のリンクの「アプリの設定画面へ飛ぶ」を実装したいのだけれど
プッシュ通知のみならずGPSも設定してて欲しいので、そちらが可能かどうかをリサーチして見つからなければ合わせない…。

コメント

タイトルとURLをコピーしました