Служба Apple Push Notification с использованием Urban Airship в iPhone - PullRequest
1 голос
/ 11 августа 2010

Я внедрил сервис Apple Push Notification с помощью Urban Airship и успешно получил уведомление в своем приложении.Если я получаю уведомление, появляется окно с предупреждением. Если я нажимаю кнопку просмотра в окне с предупреждением, запускается приложение.Обычно это происходит в APNS.Но мой клиент хочет: если в RSS-ленте произошли какие-либо обновления и появилось окно с предупреждением, если мы щёлкнем по представлению в виде оповещения, оно должно перейти к конкретной ленте в приложении, приложение не запускается.ТАК можно ли это сделать?Можно ли написать события для определенных кнопок просмотра предупреждений в моем приложении.

Вот мой пример кода:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

       [[UIApplication sharedApplication] registerForRemoteNotificationTypes:   UIRemoteNotificationTypeBadge                                                           | UIRemoteNotificationTypeSound                                                                          | UIRemoteNotificationTypeAlert];

        [window addSubview:viewcontrollers.view];

        [window makeKeyAndVisible];

        NSLog(@"remote notification2: %@",[launchOptions description]);

      return YES;

     }

. В этом методе didFinishLaunchingWithOptions я не могу получить значения словаря, и он всегда получает нулевое значение.Можно ли получить значение словаря в этом методе (приходит уведомление).

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

            NSString *message = [userInfo descriptionWithLocale:nil indent: 1];

            NSLog(@"The message string is %@",message);

            UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Remote Notification" message: message delegate: nil cancelButtonTitle: @"ok" otherButtonTitles: nil];
            [alert show];
            [alert release];
      }

В этом методе я мог бы получить значение словаря.Но этот метод вызывает только, если какое-либо обновление происходит во время работы в приложении.

Пожалуйста, помогите мне!

Спасибо

Ответы [ 2 ]

4 голосов
/ 13 августа 2010

Это действительно возможно сделать.В вашем методе application:didReceiveRemoteNotification вам будет передан NSDictionary со всеми данными push-уведомлений.То, что вы хотите сделать, это отправить какой-либо идентификатор или URL-адрес в полезной нагрузки на Urban Airship.Что-то вроде:

{
    "aps": {
        "alert": "New RSS entry"
    },
    "entry_id": "XYZ123"
}

И тогда вы можете написать код, чтобы пойти и получить правильную запись фида в вашем приложении.

1 голос
/ 15 августа 2010

Когда приложение не запущено или было остановлено системой, и приложение запускается с помощью уведомления:

В этом случае вы должны получить словарь уведомлений (который сам по себе является значением launchOptions):

http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html#//apple_ref/doc/uid/TP40006786-CH3-SW18

Я предполагаю, что код будет примерно таким:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{

     NSDictionary *remoteNotification = (NSDictionary *) [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
     if (remoteNotification != nil) {
           NSString *message = [remoteNotification descriptionWithLocale:nil indent: 1];
     }    
}
...