Push-уведомление и просмотр действия кнопки [iphone SDK APNS] - PullRequest
0 голосов
/ 30 ноября 2010

Я разрабатываю приложение с поддержкой push-уведомлений для Iphone. В моем приложении у меня есть два списка (UITableView) 1-й для списка категорий и 2-й - список содержимого. Пользователь щелкает нужную категорию, затем отображается содержимое, относящееся к этой категории, затем пользователь выбирает содержимое, и содержимое отображается в подробном представлении (обычно это UIWebView).

Push-уведомление успешно приходит в моем приложении. Мое требование: - После нажатия кнопки VIEW Push-оповещения приложение будет отображать подробный вид (UIWebView) [Пропуск категории и списка содержимого]. У меня есть уникальный идентификатор для категории и содержания. Поэтому, пожалуйста, объясните мне, как связать определенный контент с Push-уведомлениями и непосредственным отображением этого контента.

Спасибо и всего наилучшего.

1 Ответ

6 голосов
/ 20 декабря 2010

HI,

Я решил проблему.Это то, что я сделал.Когда приложение получило push-уведомление, оно сохранило уведомление в launchOptions NSDictionary.

/* Push notification received when app is not running */
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
NSString *params=[[launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"] objectForKey:@"contTag"];

if ([params length] > 0 ) {//app launch when VIEW button of push notification clicked

 //do some processing   
 ........ 
 WebViewController *webViewController = 
    [[WebViewController alloc] initWithNibName:@"WebView" bundle:[NSBundle    mainBundle]];
    // Put your custom code


    [[self navigationController ] pushViewController:webViewController animated:YES];
    [window addSubview:navigationController.view];


/* Remote Notification Received while application was open. */


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

NSLog(@"remote notification: %@",[userInfo description]);

NSString *contentsInfo = [userInfo objectForKey:@"contTag"];
NSLog(@"Received contents info : %@", contentsInfo);

NSDictionary *apsInfo = [userInfo objectForKey:@"aps"];

NSString *alert = [apsInfo objectForKey:@"alert"];
NSLog(@"Received Push Alert: %@", alert);

NSString *sound = [apsInfo objectForKey:@"sound"];
NSLog(@"Received Push Sound: %@", sound);
AudioServicesPlaySystemSound(kSystemSoundID_Vibrate);


//-----------------------APNS HANDLE----------------
UIApplicationState state = [application applicationState];
if (state == UIApplicationStateActive){
    NSLog(@" It is in active state");
    application.applicationIconBadgeNumber = [[apsInfo objectForKey:@"badge"] integerValue];
}
   else {

if ([contentsInfo length] > 0 ) {
      // Do whatever u want for push notification handle
}

ПРИМЕЧАНИЕ. Здесь contTag - это ключ, установленный на стороне сервера для полезной нагрузки push-уведомления.Вы можете установить любой ключ на стороне сервера.

Надеюсь, это поможет какому-то телу.Спасибо

...