アプリの openURL メソッドをオーバーライドして、いつアプリを から離れようとしているのかを知ることができます。ABPersonViewController
その理由は、そのクラスがユーザーに提示するすべてのアクションについてデリゲートに通知しないためです。それができれば、すべてうまくいくでしょう。
これは iOS 7 では問題なく動作しましたが、iOS 8.1 でこれを試してみると、 がすべてのアクションを必要としてABPersonViewController
いないことがわかりました。openURL
たとえば、電話番号をタップすると、電話をかけずに電話アプリにアクセスできopenURL
ます。一方、SMS バブルをタップすると、が呼び出されますopenURL
。
Facebook プロファイル エントリ (URL "fb://profile/1234567890") をタップすると、ログには、"Launch Services" にスキーム "fb" の登録済みハンドラーがないことが示されます。そのため、Launch Services への呼び出しが openURL への呼び出しに取って代わったと想定しています。それが「プライベート API」であるということ以外、これ以上のことはわかりません。
これらの呼び出しを検出する方法はありますか? または、アプリの内部で「tel」や「mailto」などの既知のスキームのハンドラーをオーバーライドすることは可能ですか? 基本的に、いつアプリを終了し、どこに行くのかを知る必要があります。