アプリのシナリオは次のとおりです。ユーザーが通知をスワイプすると、URL を介して他のアプリを起動します。そのため、基本的には通知が届くと他のアプリを起動します。
現在、スワイプ通知シナリオを処理するために、
- (BOOL)application:(UIApplication *)app didFinishLaunchingWithOptions:(NSDictionary *)
メソッドが呼び出され、このメソッド内で次processNotification:
の内容を含むメソッドを呼び出します。
...
[[UIApplication sharedApplication] openURL:url];
...
- アプリがアクティブなときにプッシュを受信した場合、
url
完全に正常に開かれます。 - 通知をスワイプまたはクリックしてプッシュを受信した場合、
url
はバックグラウンドで開かれますが、現在表示されているアプリは自分のアプリです。たとえば、 myurl
がの場合tel:123-456-7890
、iOS は通話を開始します (音声が聞こえます) が、アクティブなアプリは ではなくPhone.app
、私のアプリです。
それは私にはかなり奇妙に思えました。ただし、UI が読み込まれるのを待ってから呼び出すとprocessNotification:
、Phone.app
ウィンドウが正しく表示されます。(プラットフォームのバグ? 呼び出しは発生しますが、UI が一番上にあるためです。)
processNotification:
ビュー コントローラーが読み込まれるまで、この呼び出しの実行を (おそらく操作キューを介して) 遅らせるメソッドが必要です。そうしないと、アプリが一番上に表示され、URL がバックグラウンドで開かれます。