64

A tweet can be opened by Safari with a link of this format:

http://twitter.com/1Direction_X/statuses/197752514391715842

On iOS 5, Twitter is built-in. How can I open the above tweet using the native Twitter app called from my app?

Ben Klein
  • 1,719
  • 3
  • 18
  • 41
vietstone
  • 8,784
  • 16
  • 52
  • 79

3 Answers3

180

This is how you access other apps from your own. Just find the proper url to send for accessing status. I've included a list that should have most of the important ones. Including status finding.

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"twitter://status?id=12345"]];

twitter://user?screen_name=lorenb

twitter://user?id=12345

twitter://status?id=12345

twitter://timeline

twitter://mentions

twitter://messages

twitter://list?screen_name=lorenb&slug=abcd

twitter://post?message=hello%20world

twitter://post?message=hello%20world&in_reply_to_status_id=12345

twitter://search?query=%23hashtag

Note: It can be important to make sure the user has twitter installed or this will cause a crash. So I recommend adding this in an if statement before you try to send them to twitter.

[[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"twitter://"]];
Ryan Poolos
  • 18,421
  • 4
  • 65
  • 98
  • 1
    Any idea how you can search for a hash tag?? I've tried NSURL *twitterURL = [NSURL URLWithString:[NSString stringWithFormat:@"twitter://search?q=%@", hashTag]]; but no luck... – Smikey Jun 11 '12 at 14:01
  • I don't know sorry. You may not be able to. THis isn't the entire Twitter API just a URLScheme for the app. They may not have built that function in. – Ryan Poolos Jun 11 '12 at 15:58
  • 2
    If the check fails (user does not have Twitter installed) I would fall back to launching the corresponding profile/etc. on Safari – Nicolas Miari Jun 12 '12 at 07:03
  • 2
    On binpress I have a Twitter Smart Link that if Twitter fails will open up the link in a UIWebView Modal within the app. http://www.binpress.com/app/in-app-twitter-smart-link/204 – Ryan Poolos Jun 12 '12 at 12:08
  • twitter://search?query=%23hashtag – Hafthor Dec 12 '12 at 17:46
  • 1
    Nice one @Hafthor I'll add it to the post incase someone else comes along. – Ryan Poolos Dec 12 '12 at 17:51
  • Can I attach a media (picture and|or video) along the message url scheme. (i.e. twitter://post?message=hello%20world) – khunshan Apr 02 '15 at 06:36
  • You could easily attach a link to a picture or video obviously. And Twitter also supports something called mediaIDs. I think it works such as `?message=hello%20world&media_ids= 471592142565957632` but to use mediaIDs you still need to manage uploading content directly to Twitter. I think the easiest way would be to use a more open service like imgur to upload the photo in the background, then grab the link, add it to the tweet, then activate the URL scheme. I don't think Twitter's image service is very open. – Ryan Poolos Apr 02 '15 at 15:49
  • more info on the twitter side of things here https://dev.twitter.com/rest/reference/post/statuses/update#api-param-media_ids and here https://dev.twitter.com/rest/public/uploading-media – Ryan Poolos Apr 02 '15 at 15:50
  • Is there a URL for sending direct message? – Zipme Apr 29 '15 at 03:10
  • @RyanPoolos how do I send pre-filled text message as a direct message to my followers using nsurl e.g.: "twitter://messages=\(msg) - not working" expecting similar to whatsapp nsurl "whatsapp://send?text=\(msg)" – dhanasekar Jun 23 '16 at 12:44
  • At the time of this post the Twitter URL scheme didn't support direct messages. Only `twitter://post?message=XXX` In today's world, its much better to trigger the iOS Twitter Share sheet instead and post without leaving the app. – Ryan Poolos Jun 23 '16 at 15:01
  • Is posible share an image? something like `twitter://post?message=hello%20world&media_id=4324324` – Ricardo May 08 '19 at 13:14
  • I believe to upload media you'd need to use the Twitter API because you'd need to upload the media as well. However if you just want to include media, you could upload it yourself then pass a url as part of the message. Twitter is pretty good about expanding URLs into visuals. – Ryan Poolos May 09 '19 at 18:37
  • I am also interested in passing a media_id to the Twitter app (having already uploaded it to Twitter using their API). Does anyone know if this is possible? media_id= and media_ids= does not seem to work.. – Thomas Clowes Jun 02 '19 at 11:37
  • Is there a similar URL for switching to one of my multiple accounts set up in the iOS Twitter app? – wass rubleff Jul 14 '19 at 21:39
1

I would go with below approach...

NSURL *twitterURL = [NSURL URLWithString:@"fb://profile/<profile_id>"];
if ([[UIApplication sharedApplication] canOpenURL:twitterURL]) {
    [[UIApplication sharedApplication] openURL:twitterURL];
} else {
    WebViewViewController *secondView = [self.storyboard instantiateViewControllerWithIdentifier:@"webinterface"];

    secondView.headerLabel = @"Facebook";
    secondView.webPath = @"https://www.facebook.com/pages/<link_for_page>";

    [self.navigationController pushViewController:secondView animated:YES];
}

in WebViewViewController I have webview and I am opening link there...

basically its like if you don't have Twitter on iPhone, it will open in WebView...

Fahim Parkar
  • 30,974
  • 45
  • 160
  • 276
-1

My apologies if this has already been answered, but the schema for posting a message with a hashtag is:

twitter://post?message=hello%20world%23thisisyourhashtag.  

Just replace thisisyourhashtag with the hashtag that you would like users to post.

Mogsdad
  • 44,709
  • 21
  • 151
  • 275
  • This isn't actually a schema specific to hashtags. Any message to be sent should be encoded before using it in a URL. During the encoding, any hash signs will become `%23`. – Mr. Lance E Sloan Jul 08 '17 at 11:41