El formatting básico de los manejadores de URL de Facebook / Twitter

Estoy bastante seguro de que una hora después de publicar esto puedo encontrar la respuesta, pero llevo más de una hora buscando y parece que no funciona. Así que aquí va …

Me gustaría poner algunos enlaces sencillos de "Contacto" en mi aplicación que abre mi perfil en una de estas aplicaciones de Twitter, si está disponible … "Twitter", "Tweetbot", "Twitterriffic", o Facebook volviendo a Safari si no hay ninguno disponible. No deseo agregar una API completa para Twitter, etc., ya que es simplemente una página de contacto, no tengo necesidad de acceder a sus líneas de time, ni saber su ID de usuario, etc.

La aplicación y aplicación de Tweetbot que uso en mi teléfono funciona bien (ver más abajo) y abre mi Página de Perfil; sin embargo, no puedo get el trabajo pnetworkingeterminado de Facebook o Twitter, las aplicaciones se inician pero no llegan a mis respectivas página de perfil (obviamente he omitido el código de testing pero estas son las líneas que llaman a las aplicaciones) …

//Twitter [[UIApplication shanetworkingApplication] openURL:[NSURL URLWithString:@"twitter://twitter.com/MyTwitterID"]]; //Tweetbot - WORKS! [[UIApplication shanetworkingApplication] openURL:[NSURL URLWithString:@"tweetbot:///user_profile/MyTwitterID"]]; //Fall Back to Safari - WORKS! [[UIApplication shanetworkingApplication] openURL:[NSURL URLWithString:@"http://www.twitter.com/MyTwitterID"]]; //Facebook [[UIApplication shanetworkingApplication] openURL:[NSURL URLWithString:@"fb://profile/MyFbID"]]; 

Ahora recibí bastante información aquí , pero no puedo hacerlo funcionar aparte de Tweetbot y Safari. Supongo que la parte URL está en el formatting incorrecto, pero no puedo encontrar en ninguna parte que explique cómo debería ser. La búsqueda de Google muestra páginas con tags de Twitter y Facebook, pero no hay información útil, y la documentation de la API de Twitter es demasiado detallada para la implementación simple que quiero hacer. ¿Alguien puede ayudarme con los formattings de URL correctos?


[EDIT] Me llevó más de una hora, pero aquí es para Twitter al less …

 [[UIApplication shanetworkingApplication] openURL:[NSURL URLWithString:@"twitter://user?screen_name=MyTwitterID"]]; 

¡Seguí trabajando en Facebook! No puedo atribuirme el mérito de la respuesta, aunque tropecé aquí

Cuando consiga que Facebook funcione también publicaré mi código aquí con todas las partes en caso de que ayude a alguien más.

Plasma


EDIT 2: Ok, aquí está mi código (He eliminado mi URL del website y también mis ID de Facebook, pero obtendrás la idea … Aparece una hoja de acción de la interfaz de usuario con las opciones de contacto. Espero que sea útil para alguien más.

 #pragma mark - Contact Us Methods - (IBAction)openContact { UIActionSheet *popupContact = [[UIActionSheet alloc] initWithTitle:@"Contact Us" delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:nil otherButtonTitles:@"Twitter", @"Facebook", @"Email", @"Visit our website", nil]; popupContact.actionSheetStyle = UIActionSheetStyleDefault; [popupContact showInView:self.parentViewController.tabBarController.view]; } -(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex { NSString *twitterUserName = @"MyTwitterName"; //Facebook ID (not the page name) check the FB urls for id=XXXXXXXXXXXXXXXX NSString *facebookUserID = @"XXXXXXXXXXXXXXX"; UIApplication *app = [UIApplication shanetworkingApplication]; switch(buttonIndex){ case 0: { //Contact Us By Twitter //Twitter Default NSURL *twitterURL = [NSURL URLWithString:[NSString stringWithFormat:@"twitter://user?screen_name=%@", twitterUserName]]; if ([app canOpenURL:twitterURL]) { [app openURL:twitterURL]; return; } //Tweetbot NSURL *tweetbotURL = [NSURL URLWithString:[NSString stringWithFormat:@"tweetbot:///user_profile/%@", twitterUserName]]; if ([app canOpenURL:tweetbotURL]) { [app openURL:tweetbotURL]; return; } // Tweetie: http://developer.atebits.com/tweetie-iphone/protocol-reference/ NSURL *tweetieURL = [NSURL URLWithString:[NSString stringWithFormat:@"tweetie://user?screen_name=%@", twitterUserName]]; if ([app canOpenURL:tweetieURL]) { [app openURL:tweetieURL]; return; } // Birdfeed: http://birdfeed.tumblr.com/post/172994970/url-scheme NSURL *birdfeedURL = [NSURL URLWithString:[NSString stringWithFormat:@"x-birdfeed://user?screen_name=%@", twitterUserName]]; if ([app canOpenURL:birdfeedURL]) { [app openURL:birdfeedURL]; return; } // Twittelator: http://www.stone.com/Twittelator/Twittelator_API.html NSURL *twittelatorURL = [NSURL URLWithString:[NSString stringWithFormat:@"twit:///user?screen_name=%@", twitterUserName]]; if ([app canOpenURL:twittelatorURL]) { [app openURL:twittelatorURL]; return; } // Icebird: http://icebirdapp.com/developerdocumentation/ NSURL *icebirdURL = [NSURL URLWithString:[NSString stringWithFormat:@"icebird://user?screen_name=%@", twitterUserName]]; if ([app canOpenURL:icebirdURL]) { [app openURL:icebirdURL]; return; } // Fluttr: no docs NSURL *fluttrURL = [NSURL URLWithString:[NSString stringWithFormat:@"fluttr://user/%@", twitterUserName]]; if ([app canOpenURL:fluttrURL]) { [app openURL:fluttrURL]; return; } // SimplyTweet: http://motionobj.com/blog/url-schemes-in-simplytweet-23 NSURL *simplytweetURL = [NSURL URLWithString:[NSString stringWithFormat:@"simplytweet:?link=http://twitter.com/%@", twitterUserName]]; if ([app canOpenURL:simplytweetURL]) { [app openURL:simplytweetURL]; return; } // Tweetings: http://tweetings.net/iphone/scheme.html NSURL *tweetingsURL = [NSURL URLWithString:[NSString stringWithFormat:@"tweetings:///user?screen_name=%@", twitterUserName]]; if ([app canOpenURL:tweetingsURL]) { [app openURL:tweetingsURL]; return; } // Echofon: http://echofon.com/twitter/iphone/guide.html NSURL *echofonURL = [NSURL URLWithString:[NSString stringWithFormat:@"echofon:///user_timeline?%@", twitterUserName]]; if ([app canOpenURL:echofonURL]) { [app openURL:echofonURL]; return; } // --- Fallback: Mobile Twitter in Safari NSURL *safariURL = [NSURL URLWithString:[NSString stringWithFormat:@"http://mobile.twitter.com/%@", twitterUserName]]; [app openURL:safariURL]; return; } case 1: { //Facebook NSURL *facebookURL = [NSURL URLWithString:[NSString stringWithFormat:@"fb://profile/%@", facebookUserID]]; if ([app canOpenURL:facebookURL]) { [app openURL:facebookURL]; return; } // --- Fallback: Mobile Facebook in Safari NSURL *safariURL = [NSURL URLWithString:@"https://touch.facebook.com/MyFBName"]; [app openURL:safariURL]; return; } case 2: //Email [app openURL:[NSURL URLWithString:@"mailto://support@mywebsite.co.uk?subject=Important%20Email&body="]]; return; case 3: //Visit The Website [app openURL:[NSURL URLWithString:@"http://www.mywebsite.co.uk"]]; return; case 4: //Cancel return; } } 

Solo algunos pasos adicionales para su solución,

Primero debes verificar si la aplicación existe, luego iniciarla o abrir el enlace en safari.

 NSString *filePath = @"/Applications/TweetBot.app"; if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) { // launch app } else { // launch safari instead } 

Consulte Edición 2 en la primera publicación, esta es la solución completa.

Plasma