1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

iPhoneのPWAで通知バッジが付かないと思ったら付いていた話

1
Posted at

iPhoneのPWAで通知バッジが付かないと思ったら付いていた話

前回、自治会HPにPWA通知機能を実装しました。

通知自体は無事に動作し、

  • Mac
  • iPhone

の両方で通知を受信できるようになりました。

ところが気になったことがありました。

自治会連合ホームページでは、通知が届くとアプリアイコンに赤丸が付きます。

回覧板
🔴1

という感じです。

一方、現在開発中の自治会ホームページでは通知は届くものの、赤丸が付いていないように見えました。

本当に付いていないのか?

まずiPhoneの通知設定を確認しました。

設定
↓
通知
↓
回覧板

を確認すると、

通知
サウンド
バッジ

はすべて有効になっていました。

それなのに赤丸が見当たりません。

「やはりPWAだから無理なのだろうか?」

と思い始めました。

実は付いていた

ところがホーム画面をよく見ると、

回覧板
🔴1

と表示されていました。

付いていないと思っていた通知バッジは、実は正常に動作していました。

完全に見落としていただけでした。

次の疑問

今度は逆に、

なぜ消えないのか?

が気になり始めました。

通知を確認しても赤丸が残っていたからです。

そこで試しにアプリ起動時に

navigator.clearAppBadge()

を実行してみました。

消える時と消えない時がある

ところが結果は予想外でした。

通知からアプリを開く
↓
赤丸が消える

一方で、

ホーム画面のアイコンから開く
↓
赤丸が残る

という動きになりました。

原因

調べてみると、

通知から開いた場合はアプリが新しく起動されるため、

useEffect()

が実行されます。

しかし、

既にアプリが起動したままの状態でホーム画面アイコンから戻った場合は、

Reactのコンポーネントが再生成されません。

そのため、

clearAppBadge()

も実行されませんでした。

結論

最終的には、

通知が届く
↓
赤丸が付く
↓
通知から開く
↓
赤丸が消える

という動作になりました。

自治会用途としては十分実用的なので、ここで実装を終了することにしました。

学び

今回の一件で、

「バッジが付いていない」

と思ったら、

実際には

「付いていることに気付いていない」

だけだったことが分かりました。

そしてPWAでは、

  • 通知センター
  • 通知バッジ
  • アプリのライフサイクル

も理解する必要があることを学びました。

通知機能の実装が終わったと思ったら、最後にもう一つ勉強させられた出来事でした。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?