4

ユーザーに送信するプッシュ通知があり、タップしたときにアクションを実行できるようにしたいと考えています。アプリがフォアグラウンド、バックグラウンドにある場合、またはユーザーが通知センターからのアラートをタップした場合、アプリのデリゲートで次のメソッドが呼び出されることがわかっています。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo

ただし、アプリが起動されておらず、通知が届くとすぐにユーザーが通知バナーをタップした場合、このメソッドは呼び出されないようです。この状況で実装する必要がある別の方法はありますか? 他の方法も実装する必要がある他のケースはありますか?

4

1 に答える 1

4

通知バナーをクリックしてもアプリが起動しない場合は、にNSDictionaryが表示されますapplication:didFinishLaunchingWithOptions:

次に、次のようなことを行うことができます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  NSDictionary *pushDict = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
  if(pushDict)
  {
    [self application:application didReceiveRemoteNotification:pushDict];
  }
}

さらに、application:didReceiveRemoteNtification:このメソッドでは、次のように、通知の受信時にアプリケーションが非アクティブであったかどうかをテストできます。

-(void)application:(UIApplication *)app didReceiveRemoteNotification:(NSDictionary *)userInfo
{
  if([app applicationState] == UIApplicationStateInactive)
  {
    NSLog(@"Received notifications while inactive.");
  }
  else
  {
    NSLog(@"Received notifications while active.");
  }
于 2012-08-13T00:09:32.773 に答える