【2024年4月】弊社では、基本リモートワークで一緒に成長してくださるメンバーを広く募集させていただいております。 詳細はこちら

【Swift】アプリアイコンのバッジの数字を更新・削除(setBadgeCount )する方法

【Swift】アプリアイコンのバッジの数字を更新・削除(setBadgeCount )する方法
ふくしま

こんにちは!株式会社メモリアインクのふくしまです〜
記事をご覧いただきありがとうございます!

この記事では、UserNotificationsフレームワークを活用しアプリアイコンにバッジを付ける方法を徹底解説していきます。

この記事を読んで分かること…
・アプリアイコンにバッジを表示する具体的なステップ
・表示されているバッジを消す方法
・バッジ表示で使われていた非推奨となったsetBadgeCount(_:withCompletionHandler:) に変わる、setBadgeCount(_:withCompletionHandler:) の使用方法

目次

環境

Xcode15.2
Swift 5.9

setBadgeCount(_:withCompletionHandler:)とは

setBadgeCount(_:withCompletionHandler:) は、iOS16以降利用可能アプリのアイコンのバッジ数を更新するためのアップル標準のメソッドです。

バッジの数字の更新の実装

ローカル通知が送られてきて、通知を呼んだ際にバッジを消す(バッジの数字を0にする)方法を例に解説します。

前提

・通知機能を利用するためのinfo.plistの設定ができてること
・通知許可の取得を実装していること
・AppDelegateでUNUserNotificationCenterDelegateが使える状態であること
・通知が来た際に、アプリアイコンにバッジが表示されること

以下で、上記前提の実装方法について詳しく解説しているので、あわせてご確認ください!

実装

届いた通知を呼んだ際に、バッジを削除する方法は以下です。

extension AppDelegate {
     func userNotificationCenter(
        _ center: UNUserNotificationCenter,
        didReceive response: UNNotificationResponse,
        withCompletionHandler completionHandler: @escaping () -> Void) {
            let center = UNUserNotificationCenter.current()
            print("タップされたよ")
            center.setBadgeCount(0)
            completionHandler()
    }
}

コードの説明:
UNUserNotificationCenterDelegate を利用できるように設定されたAppDelegateを拡張(1行目)
userNotificationCenter(didReceive response:) はUNUserNotificationCenterDelegateのデリゲートメソッドで、届いたローカル通知がタップされた際に呼ばれます。
setBadgeCount メソッドで現在アイコンに表示されたバッジをリセットします。

以上で実装完了です。ビルドして、挙動を確認してみましょう。

【Swift】届いたローカル通知のタップを検知して、アプリアイコンのバッジの数字を更新(削除)する方法(UserNotifications,setBadgeCount )を徹底解説

まとめ

いかがでしたか?
バッジの操作は、アプリ開発において必要不可欠な技術なので、この記事がお役に立てたら嬉しいです!

ふくしま

この記事があなたのスキルアップに役立ったなら、次のキャリアステップを踏み出す絶好の機会かもしれません。エンジニアとしてのさらなる成長と挑戦を求めるなら、
未経験からIT・Webエンジニアを目指すなら【ユニゾンキャリア】
をオススメします!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次