Параметры запуска iphone - PullRequest
7 голосов
/ 28 марта 2011

я не получаю никаких опций запуска после push-уведомления;Вот код, который у меня есть, но ни один из NSLogs, кажется, не печатается в области отладки.

UILocalNotification *localNotif =
[launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];

if (localNotif) {
    NSString *itemName = [localNotif.userInfo objectForKey:@"aps"];
    NSLog(@"Custom: %@", itemName);
} else {
    NSLog(@"//////////////////////////");

}

, когда я открываю приложение (через нажатие кнопки просмотра push-уведомления), оно переходит к сценарию didReceiveRemoteNotification, яуверен, что это должно было произойти ..

спасибо за чтение.

Ответы [ 6 ]

17 голосов
/ 28 марта 2011

Ваше приложение получает push-уведомления по нескольким путям, в зависимости от состояния вашего приложения при его получении.

Если ваше приложение не запущено (даже не приостановлено в фоновом режиме), launchOptions будет содержатьполезные данные уведомления (ключ UIApplicationLaunchOptionsRemoteNotificationKey).

Если он уже запущен или приостановлен в фоновом режиме, приложение получит уведомления через application:didReceiveRemoteNotification: в делегате приложения.

Процесс выполняетсято же самое для локальных уведомлений (UIApplicationLaunchOptionsLocalNotificationKey в приложении: didFinishLaunchingWithOptions: и application:didReceiveLocalNotification:)

1 голос
/ 22 декабря 2016

Ответы, приведенные выше, верны. Я широко использую следующий фрагмент в своем приложении: didFinishLaunchingWithOptions:

if let remoteNotifPayload = launchOptions?[UIApplicationLaunchOptionsKey.remoteNotification] as? [AnyHashable: Any] {
        notificationsController.didReceiveRemoteNotification(with: remoteNotifPayload)
    }
1 голос
/ 27 апреля 2011

обнаружена ошибка:

NSDictionary *remoteNotif = [launchOptions objectForKey:   
                              UIApplicationLaunchOptionsRemoteNotificationKey];

Если вы хотите получать удаленное уведомление, следует использовать NSDictionary, а не UILocalNotification

Удаленное уведомление - это полезная нагрузка, содержащая аргументы, а не местное уведомление.Возможно, вы захотите посмотреть на этот URL-адрес:

Сбой при обработке удаленного уведомления, когда приложение не запущено

Если вы хотите сделать локальное уведомление, измените его, как советует Людовик

0 голосов
/ 27 июня 2015

Вы можете использовать NSUserDefaults, чтобы сделать трюк. В вашем AppDeligate.m установите bool на YES в первый раз. Так что после этого он никогда не доберется до NO.

  -(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    //add this if loop
        if (![[NSUserDefaults standardUserDefaults] boolForKey:@"HasLaunchedOnce"])
        {
            [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"HasLaunchedOnce"];
            [[NSUserDefaults standardUserDefaults] synchronize];
        }
    }
0 голосов
/ 28 марта 2011
  (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 
      NSLog(@"Alert message: %@",[[userInfo valueForKey:@"aps"] valueForKey:@"alert"]);
}
0 голосов
/ 28 марта 2011

Если вы хотите локальное уведомление (я полагаю, с вашим именем var), замените UIApplicationLaunchOptionsRemoteNotificationKey на UIApplicationLaunchOptionsLocalNotificationKey, и это должно работать.

...