2012-10-05 7 views
0

나는 server.Now에서 푸시 알림을받는 아이폰 응용 프로그램을 가지고 있는데,보기 컨트롤러에 메시지를 표시하려고합니다. 동일한 메시지가 tableview에로드됩니다. 두 종류의 메시지를받는 중 하나는 링크이고 다른 하나는 이전과 같은 메시지입니다. 사파리에서 열어보고 싶은 링크라면 평소와 같이 tableview에 갈 필요가 없습니다.푸시 알림에서 텍스트 문자열을 가져 오는 방법은 무엇입니까?

답변

1

그런 다음 당신은 기능에 사전을 얻을 푸시 알림을 클릭

didReceiveRemoteNotification:

이 코드를 시도

0

푸시 알림은 응용 프로그램에 연결되어 있으므로 간단히 응용 프로그램에서 사파리를 열어 푸시 알림을 보낼 수 없습니다. 그러나 한 가지 해결 방법은 다음과 같이 갈 수 있습니다

  • 사용자가 (즉, 잠금 화면에서 엽니 다 와이프)
  • 앱이 열리고 통지의 데이터가 응용 프로그램에 전달되는 통지에 응답 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 방법. 그런 다음, 당신이 당신의 페이로드를했으면 그래서

    NSDictionary *dictionary = [launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"]; 
    
    // If dictionary is not nil, then your app is launched due to a push notification 
    if (dictionary != nil) { 
    
        NSDictionary *payload = [tmpDic objectForKey:@"aps"]; 
    } 
    
  • 에 전달 된 데이터를 심문 내용을보고하고,이 URL 인 경우, URL에 전달 사파리 URL 방식을 호출 할 수 있습니다.

    [[UIApplication sharedApplication] openURL:[NSURL URLWithString: <URL from payload>]];

과 같이 이것은 당신이 당신이 원하는 무엇을 달성하는 데 도움이됩니다,하지만 OS가 사파리로 전환하기 전에 사용자가 간단히 먼저 응용 프로그램을 보는 것을 의미합니다.

부채, 왜 이것을하고 싶습니까? 사용자는 알림에서 임의의 URL을 시작해서는 안되며, Apple이 그다지 좋지 않을 것이라고 생각합니다. 아마 그들은 앱의 URL에 대한 정보를보고 나서 사파리에서 열 것인지를 선택해야합니다.

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
    { 
     NSLog(@"remote notification: %@",[userInfo description]); 

     if (userInfo) 
     { 
      if ([[userInfo allKeys] containsObject:@"aps"]) 
      { 
       if([[[userInfo objectForKey:@"aps"] allKeys] containsObject:@"alert"]) 
       { 
        if([[[userInfo objectForKey:@"aps"] allKeys] containsObject:@"alert"]) 
        { 
         NSString *urlString = [[userInfo objectForKey:@"aps"] objectForKey:@"alert"]; 
         NSURL *url = [NSURL URLWithString:urlString]; 

         if(url)  
         { 
          [[UIApplication sharedApplication]openURL:url]; // open in the safari... 
         } 

         else 
         { 
          // use the message in table view 


         } 

        } 

       } 
      } 
     } 


    } 
- : -
관련 문제