2014-03-01 2 views
4

맞춤 URL 구성표를 사용하는 앱을 만들고 있는데 설정이 모두 끝났으며 앱을 열 때 작동하지만 지금은 하나의 문자열을 앱을 여는 사람이 해당 문자열을 볼 수 있도록 URL을 지정하십시오. 나는 정말로 고투하고있다, 누군가 나를 기쁘게 도와 줄 수 있냐?iOS 맞춤 URL 구성표

여기에 내 코드

나는 P-목록에서 사용자 정의 URL 설정을 가지고있다
- (NSDictionary*)parseURLParams:(NSString *)query 
{ 
    NSArray *pairs = [query componentsSeparatedByString:@"&"]; 
    NSMutableDictionary *params = [[NSMutableDictionary alloc] init]; 
    for (NSString *pair in pairs) 
{ 
    NSArray *kv = [pair componentsSeparatedByString:@"="]; 
    NSString *val = [[kv objectAtIndex:1] 
        stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

    [params setObject:val forKey:[kv objectAtIndex:0]]; 
} 
return params; 
} 


- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex 
{ 
    NSString *title = [alertView buttonTitleAtIndex:buttonIndex]; 

    if([title isEqualToString:@"Send Challenge"]) 
    {   

     [FBWebDialogs presentRequestsDialogModallyWithSession:nil 
                 message:[NSString stringWithFormat:@"I just scored %i points on this great game, called SumsUp. can you beat it?!", gameScore] 
                 title:nil 
                parameters:nil 
                 handler:^(FBWebDialogResult result, NSURL *resultURL, NSError *error) { 

      if (error) 
      { 
       // Error launching the dialog or sending the request. 
       NSLog(@"Error sending request."); 
      } 
      else 
      { 
       if (result == FBWebDialogResultDialogNotCompleted) 
       { 
        // User clicked the "x" icon 
        NSLog(@"User canceled request."); 
       } 
       else 
       { 
        // Handle the send request callback 
        NSDictionary *urlParams = [self parseURLParams:[resultURL query]]; 
        if (![urlParams valueForKey:@"request"]) 
        { 
         // User clicked the Cancel button 
         NSLog(@"User canceled request."); 
        } 
        else 
        { 
         // User clicked the Send button 
         NSString *requestID = [urlParams valueForKey:@"request"]; 
         NSLog(@"Request ID: %@", requestID); 
        } 
       } 
      } 
     }]; 
    } 

입니다. 내 응용 프로그램 위임에

나는이 :

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 
{ 
    UIAlertView *alertView; 
    NSString *text = [NSString stringWithFormat: @"url recieved: %@", url]; 
    alertView = [[UIAlertView alloc] initWithTitle:@"" message:text delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alertView show]; 

    return [FBAppCall handleOpenURL:url sourceApplication:sourceApplication withSession:[PFFacebookUtils session]]; 

} 

나는이 말이하고 누군가가 나를 도울 수 있기를 바랍니다. 더 자세한 정보가 필요하시면 알려주십시오.

감사합니다. Graham

+0

. 'parseURLParams :' – Wain

+0

을 호출하는 앱 위임자 표시 감사합니다. 앱 위임 호출을 표시하는 질문을 편집했습니다. 이 모든 작동하고 문제가 발생하지 않습니다, 방금 URL에 보낼 문자열을 추가하는 방법을 해결할 수 없습니다. –

답변

1

내 솔루션은 간단합니다. 당신이 유용하다고 생각하기를 바랍니다.

- (BOOL)application:(UIApplication *)application 
      openURL:(NSURL *)url 
    sourceApplication:(NSString *)sourceApplication 
     annotation:(id)annotation 
{ 
    // Example URL: myapp://myapp.com/showString/yourString 

    BOOL isMyAppURL = [[url scheme] isEqualToString:@"myapp"]; 

    if (isMyAppURL) 
    { 
     NSArray* pathComponents = [url pathComponents]; 
     NSString *command = pathComponents[0]; 

     // Check for showString command. 
     if ([command isEqualToString:@"showString"]) 
     { 
      NSString *stringToShow = [pathComponents[1] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 

      NSLog(@"String to show: %@", stringToShow); 
     } 
    } 

    return isMyAppURL; 
} 

올바른 방향을 알려야합니다.

+0

응답 해 주셔서 감사합니다. 내가 그것에 직면하는 문제는 내가 fb [my_facebook_app_ID]에서 fb로 내 URL을 변경하면 ????????????? : //myapp.com/showString/yourString (예를 들어)입니다. 내 P - 목록, 내가 애플 리케이션 스토어에서 사용할 수있는 다른 애플 리케이션에 대한 링크를 애플 리케이션을 열려고! 나는 완전히 바보인가? –

2

ios v. 9.x.x에서 맞춤 URL 스키마에 문제가있었습니다. 내가 응용 프로그램에서 유튜브 URL을 열어 보았을 때. 나는 네트워크를 통해 탐색했을 때 흥미로운 사실을 발견했다.

iOS 9를 사용하려면 호출하려는 응용 프로그램 구성표를 사전 등록해야합니다.

  • YourApp-의 Info.plist 파일을 열고 키, LSApplicationQueriesSchemes를 추가합니다. LSApplicationQueriesSchemes에서
  • 목록 항목, 값 (내 경우) 유튜브와 새로운 항목을 추가 할 수 있습니다.

당신은 잘못 무엇을 말했다하지 않은

<key>LSApplicationQueriesSchemes</key> 
 
<array> 
 
    <string>youtube</string> 
 
</array>