UserNotificationのローカル通知は64個までしか登録できない罠

iOSでローカル通知の登録は、UNUserNotificationCenter#add(_:withCompletionHandler:)で行いますが、どうやら最大通知登録数は64個までのようです。(Xcode 11.5、Deployment Target iOS 13.0で試しました)

65個目以降を登録すると最初に登録したものから勝手に消されるようです・・・つまり登録したはずの通知が来なくなりバグります。addメソッドのコールバックでエラーにならないため見落としがち。

let request = UNNotificationRequest(
   identifier: uuid,
   content: content,
   trigger: trigger)
UNUserNotificationCenter.current().add(request) { (error) in
   if error != nil {
       // 64個の上限を超えてもエラーにはならない!
   }
}

普段は64個も登録することは少ないかもしれないですが、がっつりTODOアプリのようなアプリを作り1TODOごとに通知登録すると、上限を超えてしまうこともあるでしょう。私は1TODOに事前通知最大5つまで設定可能な仕様でアプリを作り、簡単に上限に到達してしまいました😅

しかし、UNUserNotificationCenter#add(_:withCompletionHandler:)の仕様は納得がいかない・・・やっぱり65個目登録した時点でエラーにしてほしい。UNUserNotificationCenter#getPendingNotificationRequests(completionHandler:)で、65個以上登録したのに64個しか取得できないことに気づいて「あれ?」となりました。ドキュメントにこの上限の記述見当たらない・・・

誰かが私のように気づくのが遅れて仕様破綻しないことを願うばかりです。EventKitのEKReminderやEKEventはいくつでも追加できるはず?なので、そちらで通知ありにする方法に変えるのもありかもしれません。


この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
お読みいただきありがとうございます!
5
地方都市の在宅プログラマ。受託案件とアプリ自主制作で食いつないでます。在宅介護が終わり10年ぶりに一人暮らしに。でも老人ホームの支払い大変&コロナ不況到来。ウィズコロナ時代を在宅ワークの多様化で生き抜こう。 https://twitter.com/roba4coding
コメントを投稿するには、 ログイン または 会員登録 をする必要があります。