iOS13 & xcode11 では、VoIP Push (PushKit) を受けた際 CallKit に reportNewIncomingCall を使って通知をしなければならなくなりました。
参考:VoIP Push (PushKit) は着信通知専用になりました・・・
その対策の中、アプリがバックグラウンドまたは未起動時に VoIP Push が届かないという現象が発生しました。(フォアグラウンドにある時は届く)
原因
分かりません!
xcode11 でビルドし VoIP Pushを受けた際に、すぐにreportNewIncomingCall を呼び出す対策を行う前に、何度かPushを受けてました。
もちろん、reportNewIncomingCall を呼び出さないとアプリは停止させられてしまいます。
それを何度か繰り返すことで、システムの中で「悪い子」認定されてしまったと思われます。
「悪い子」認定されてしまうと、Apple のドキュメントによれば VoIP Push 自体届かなくなるはずなのですが、なぜかフォアグラウンドでは届いてしまう点が不思議です。。。
対策
- アプリを一旦削除します。
- iPhoneの電源を落とします。
- 一定時間後、iPhoneの電源を入れます。
- ビルドして、アプリをインストールします。
以上!!
アプリの削除→再インストールだけではダメでした。
電源を落とすか再起動が良いのだと思われます。
「一定時間後」が効いているかどうかは不明です。
私は3時間くらい電源を入れるのを忘れてました(他のことをしていたので・・・)
同様の現象で困っている方がおられましたらお試しください。