2012-06-29 3 views
1

Я успешно получаю push-уведомление на своем устройстве, которое имеет тип предупреждения.Доступ к последнему полученному push-уведомлению, которое было закрыто/проигнорировано

1. Активное состояние или приложение находится на переднем плане

метод didReceiveRemoteNotification становится призванным приложения. Здесь я могу получить доступ к полученному уведомлению.

2. В-активном состоянии или приложение в фоновом режиме

сообщение уведомления Push-отображается в окне предупреждения с & кнопку «Закрыть» «Вид».

a. При щелчке кнопки «view» вызывается метод doReceiveRemoteNotification. Снова я могу получить полученное уведомление.

b. При нажатии кнопки «Закрыть» сообщение исчезнет. В этом случае у меня нет обработчика последнего полученного push-уведомления.

3. App не в фоновом режиме или приложение не работает

То же случае 2.

4. iPhone находится в спящем режиме

оповещение отображается с сообщением, но нет кнопки «Просмотр» или «Закрыть».

a. В пользовательском интерфейсе отобразится «Slide to View». Если пользователь взаимодействует с телефоном, он откроет приложение. Я могу получить доступ к полученному уведомлению.

b. Если пользователь не взаимодействует и позволяет телефону перейти в спящий режим или вручную поместить телефон в спящий режим, то в следующий раз, когда iOS отобразит сообщение «Слайд для разблокировки». Здесь снова у меня нет обработчика для последнего push-уведомления.

Как я могу получить доступ к последнему push-уведомлению о случаях 2.b и 4.b, есть ли какой-либо метод, который наилучшим образом называется, который мне не хватает для реализации.

EDIT 1: Ниже мой код AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
    // Override point for customization after application launch. 
    self.viewController = [[[Test1ViewController alloc] initWithNibName:@"Test1ViewController" bundle:nil] autorelease]; 
    self.window.rootViewController = self.viewController; 
    [self.window makeKeyAndVisible]; 

    // For PUSH NOTIFICATION 
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes: 
    (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; 

    if (launchOptions != nil) 
    { 
     NSDictionary* dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; 
     if (dictionary != nil) 
     { 
      NSLog(@"Launched from push notification: %@", dictionary); 
     } 
    } 


    return YES; 
} 

- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo 
{ 
    NSLog(@"Received notification: %@", userInfo); 
    // Received Notification at here .... 
    // Now based on response further to do ... 
} 

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken 
{ 
    NSLog(@"My token is: %@", deviceToken); 
} 

- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error 
{ 
    NSLog(@"Failed to get token, error: %@", error); 
} 

Спасибо, J61

ответ

3

ОС будет заботиться о значках. Но если пользователь отклоняет ваше push-уведомление, ваше приложение может просматривать сообщения на вашем сервере и обрабатывать его соответствующим образом, если он пропустил любые уведомления, которые пользователь уволил.

Взятые из here, это способ, которым Вы можете обрабатывать уведомления:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 
    // get state 
    UIApplicationState state = [application applicationState]; 
    if (state == UIApplicationStateActive) { 
     // App is in foreground 
    } else { 
     // App is suspended 
    } 

    application.applicationIconBadgeNumber = 0; 
} 

Edit: Если вы хотите автоинкрементным свой номер жетона, необходимо следить за счет для себя. Вы можете сделать это на своем сервере. Если ваше push-сообщение не содержит счетчик значков, iOS will remove it from your application.

+0

Думаю, мне нужно, чтобы сообщение было получено, и на основании этого мне нужно только проверить потерянные сообщения. Это единственное решение, которое сейчас лучше. – JiteshW

+0

Если вы сохраняете количество значков, это, конечно, способ определить, нужно ли вам проверять наличие новых сообщений. – Norbert

+0

Я пробовал номер значка, но проблема в том, что номер значка на моих значках приложения не увеличивается. – JiteshW

Смежные вопросы