3

アプリのシナリオは次のとおりです。ユーザーが通知をスワイプすると、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 がバックグラウンドで開かれます。

4

2 に答える 2

3

まで、プッシュ通知の処理 (つまり、呼び出しopenURL:)を遅らせる必要がありますapplicationDidBecomeActive:。から必要なパラメータを保持しますがapplication:didFinishLaunchingWithOptions:、 の処理コードのみを呼び出しますapplicationDidBecomeActive:

ここでの問題は、SpringBoard が、別のアプリケーションの進行中に別のアプリケーションの遷移が呼び出されることに対処できないことだと思います。もちろんiOSのバグです。https://bugreport.apple.comでバグ レポートを開く必要があります。

于 2013-10-18T01:57:28.760 に答える