クラウド電話帳「SKYCEB」の着信拒否機能はiOSのCall Directory Extensionを活用しています。iOS 18以降で連絡先との競合により着信拒否が防げない課題に対し、競合を自動検出し警告する機能を導入しました。
はじめに
当社が提供するSKYPCEのオプションサービスであるクラウド電話帳「SKYCEB」には、登録された特定の番号からの着信を自動的に防ぐ「着信拒否機能」が搭載されています。
この機能は、アプリ起動時にサーバー側から最新の着信拒否(迷惑電話)番号のデータを受け取り、端末に反映することで実現されています。
今回は、 OSの着信拒否機能を直接制御している「CallKitフレームワークの『Call Directory Extension』E に焦点を当て、その開発背景や動作の仕組みについてご紹介します。
なぜ着信拒否機能が必要なのか
SKYCEBにこの機能を導入した背景には、企業における安全管理の課題があります。
具体的な例として、展示会などのイベントで一度連絡先を交換したものの、後になって「悪意を持った人物」であることが発覚するようなケースが挙げられます。
「会社を守り、社員を守る」ため、管理者側が一括して対象の番号をブロックリストに指定し、組織全体で毅然とした連絡遮断が行える仕組みとして、この着信拒否機能が開発されました。
iOSにおける着信拒否の仕組みとCall Directory Extension
iOSにおいて、アプリが着信を防いだり、発信者の名前を画面に表示したりするために使われるのが、Apple純正のフレームワークである「CallKit」です。
その中にある「Call Directory Extension」という拡張機能を使用することで、アプリからOS(iOS)に対して、「この電話番号からの着信は拒否する」といったルールをあらかじめ登録することができます。
この仕組みの大きな特徴は、アプリが起動していなくてもOSが自動で処理してくれる点にあります。
着信が発生した際、OSは内部に登録されたルールと照合し、該当する番号からの呼び出しを瞬時に遮断します。
そのため、着信のたびにアプリが裏で立ち上がる必要がなく、スマートフォンのバッテリー消費や動作への影響を最小限に抑えながら、安全かつ確実に着信を防げるのが特徴です。
なお、この機能を利用するには、ユーザー自身がiPhoneの設定アプリから「アプリ」>「電話」>「着信拒否設定と着信ID」を開き、SKYCEBの機能を「オン」に設定していただく必要があります。
iOS 18以降で浮上した課題と、SKYCEBの新たな対応
iOS 18以降において、「着信拒否したい番号が、端末内の『連絡先(アドレス帳)』に同じ番号で登録されていると、なぜか着信拒否が効かなくなる」というOS側の不具合が確認されました。
着信拒否のルールよりも、端末のアドレス帳に直接登録されている連絡先の情報が優先されてしまい、結果として着信をすり抜けてしまう現象です。
【解決に向けたSKYCEBの対応】 競合の自動検出と警告
この課題を解決するため、SKYCEBでは「アプリを起動した際に、着信拒否したい番号がiPhone内の連絡先に登録されていないかを自動でチェックする仕組み」を導入しました。
もしも端末のアドレス帳に「着信拒否したい迷惑電話番号」が登録されたままになっていることを検知した場合、アプリがユーザーに対して「この連絡先がスマートフォンに残っているため、削除してください」とダイアログでお知らせします。
連絡先の件数が多い場合でもスマートフォンの画面がフリーズしないよう、処理のスピードや裏側での実行方法に工夫を重ねるとともに、チェックの途中でアプリが閉じられてしまっても次の起動時に正しく再試行できる耐久設計を施すことで、ユーザーに負担をかけない動作を実現しています。
終わりに
本記事では、SKYCEBの着信拒否機能を支える「Call Directory Extension」の基本的な仕組みと、iOS 18以降の課題へのアプローチについてご紹介します。
SKYPCEおよびSKYCEBの開発チームでは、今回ご紹介したような技術を適切に活用し、お客様が便利で安心してサービスをご利用いただけるよう、日々開発に取り組んでおります。
これからも、お客様のご要望に1つでも多くお応えできるよう精進してまいりますので、どうぞSKYPCEならびにSKYCEBをよろしくお願いいたします。
