1. ホーム
  2. ios

[解決済み] ハイブリッドアプリのVoIP通知が機能しない

2022-02-19 01:08:34

質問

最近、AppleはVoIP通知の取り扱い方法を変更しました。通知を破棄しないために、同じ実行ループでCallKitを使用するよう強制されるようになりました。私が受け取ったトレースは、次のものです。

Apps receving VoIP pushes must post an incoming call (via CallKit or IncomingCallNotifications) in the same run loop as  pushRegistry:didReceiveIncomingPushWithPayload:forType:[withCompletionHandler:] without delay.

この警告が3回表示された場合、システムは "通知を床に落としています"。

ここでの問題は、phonegap-plugin-push を使ってハイブリッド VoIP アプリを開発していることで、iOS では on notification イベントが十分に高速ではない(少なくとも同じ実行ループではない)ことを恐れています。

この問題に直面した人はいますか?

通常のプッシュ通知に変更することも考えたのですが、アプリが強制終了したときに再立ち上げして何かコードを実行する(例えばCallKitを起動する)方法が見つかりません。

編集する 私はこの方法をプッシュ通知で試していて、バックグラウンドモードはすでに設定しました。私は、"content-available" といくつかのデータ、例えば"badge" や "alert" を通知で送信すると、最近バックグラウンドになっていた場合、アプリが起動することに気づきました。バックグラウンドで15分経過すると、プッシュ通知は届きますが、アプリはもう起動しません。

よろしくお願いします。

どのように解決するのですか?

解決策が見つかりました。

iOSがvoipのプッシュ通知の扱いについてポリシーを変更したため、voip受信時に強制的に新規着信を報告するようになりました。 https://forums.developer.apple.com/thread/117939

このプラグインでできます。 https://github.com/mattkhaw/cordova-plugin-callkit

2つのプラグイン(WebsiteBeaver/CordovaCall と Hitman666/cordova-ios-voip-push) を統合したものです。私の場合はうまくいきました。ただ、javascriptからreceiveCallを削除し、プラグインを少し調整する必要がありました。

voip通知登録に関連するメソッドはcordovaCallクラスにあるので、かなり素直に作業できます。