iOS 7, Xcode 5
I've setup a UIActivityController in my app and no matter what I do, I can't ever see the icons for Twitter, Facebook, etc. I only see Mail and Message.
This happens both in the Simulator and on my iPhone 5S.
I've tried third-party tutorials and sample code and get the same behavior. However, when I use Safari/Yahoo on my iPhone, I can see everything, even though I do not have accounts for everything.
The code is straightforward:
NSString *text = #"How to add Facebook and Twitter sharing to an iOS app";
NSURL *url = [NSURL URLWithString:#"http://roadfiresoftware.com/2014/02/how-to-add-facebook-and-twitter-sharing-to-an-ios-app/"];
UIImage *image = [UIImage imageNamed:#"roadfire-icon-square-200"];
UIActivityViewController *controller =
[[UIActivityViewController alloc]
initWithActivityItems:#[text, url, image]
applicationActivities:nil];
[self presentViewController:controller animated:YES completion:nil];
My understanding is that I do NOT need to have active accounts on any device to simply see the icons in the Sheet.
So can someone help figure out why this is happening?
Related
Im struggling with iOS 3d touch / quick actions. I'm trying to implement a Quick Action Share button similar to Hangouts App using UIActivityViewController.
Following iOS dev guildes I have almost managed to achieve the goal but my application is starting with the splash & home screen right after performing the 3d touch click while the Hangouts app presents the UIActivityViewController without showing any viewcontroller beneath it.
- (void)handleShortcutItem:(UIApplicationShortcutItem *)item {
NSString *string = #"Share String";
NSURL *URL = [NSURL URLWithString:#"some URL"];
UIActivityViewController *activityViewController = [[UIActivityViewController alloc] initWithActivityItems:#[string, URL] applicationActivities:nil];
[self.window.rootViewController presentViewController:activityViewController animated:YES completion:nil];
Does anyone know how to launch those quick actions without launching the whole app?
The shortcut item is added for each and every app downloaded from the App Store (at least on my device running iOS 10). There's no need for you to implement anything!
Note that TestFlight builds will have a "Send Feedback" shortcut option instead of "Share ___"
Well, the situation is when I am trying to share text in facebook with UIActivityViewController, the share text shows blank in the facebook popup whereas the URL provided comes but text doesn't show in Facebook share dialog or popup. One more thing sometimes the URL also don't come or show in share dialog.
NOTE:
Facebook native app is already installed in device and logged in from device settings, I have also updated the app to version 31.0.
Device used:- iPhone 6 with iOS 8.3
Code:-
NSString *shareString = [NSString stringWithFormat:#"Welcome to family."];
NSURL *website = [NSURL URLWithString:#"http://google.com"];
NSArray *shareArray = #[shareString,website];
UIActivityViewController *activityController = [[UIActivityViewController alloc]initWithActivityItems:shareArray
applicationActivities:nil];
[self presentViewController:activityController
animated:YES completion:nil];
[activityController setCompletionHandler:^(NSString *activityType, BOOL completed){
}];
This won't work if you have the newest Facebook app installed - the text always blank and sometimes URL doesn't show in facebook version 31.0 . This share feature only works older app means version less than 28..
I have an image I took from the camera and saved to the /tmp folder.
When I add this image to the activityItems of an UIActivityViewController, and then press to share with either Twitter or Facebook, I have to wait up to 20 seconds for the share dialog to appear.
Note that I'm referring to the actual "Post" dialog that appears for Twitter/Facebook, not the native share popup that spawns it.
When I share the same image from the Photos app, it appears instantly.
At first I was thinking the Photos app was resizing the image, as a smaller image appears more quickly, but than I discovered that when I share the same image directly to Twitter or Facebook with SLComposeViewController, it appears (almost) instantly.
Assuming it's something I'm doing incorrectly in code, here is what results in the glacially slow dialog appearance:
NSArray *items = #[#"foo", [UIImage imageWithContentsOfFile:#"valid path to test image"]];
UIActivityViewController *vc = [[UIActivityViewController alloc]
initWithActivityItems:items applicationActivities:nil];
[self presentViewController:vc animated:YES completion:nil];
Here's what works almost instantly:
SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
[controller setInitialText:#"foo"];
[controller addImage:[UIImage imageWithContentsOfFile:#"valid path to test image"]];
[self presentViewController:controller animated:YES completion:Nil];
For what it's worth, I've also tried excluding the other share types (I read that in the past AirDrop caused issues), as well as wrapping the block to ensure I was executing on the main thread.
I assume I'm doing something wrong?
If I'm not, and these two other methods are in fact resizing the image, is there some documentation I'm missing that provides guidance as to how much resizing to do?
** Edit: additional testing seems to show this problem is unique to iOS8, as I did not experience it on an older iOS7 device.
Thanks
We've seen 4–20 seconds delay before the share dialog appear as well!.
I've fixed it by creating custom UIActivity items for Twitter and Facebook which simply calls SLComposeViewController inside performActivity method.
Seems much faster.
How does one share a video to Vimeo using the added support to the social framework on iOS 7?
This seems pretty new, haven't found any info on this.
This is what's called UIActivityViewController, available on iOS 6 and later. Based on initWithActivityItems it automatically decides what type of content you want to share and handles the rest. Pretty cool when used properly.
- (IBAction)showShareSheet:(id)sender {
NSArray *objects = #[moviePlayer.contentURL];
UIActivityViewController *activity = [[UIActivityViewController alloc]
initWithActivityItems:objects
applicationActivities:nil];
[self presentViewController:activity animated:YES completion:nil];
}
I use UIActivityViewController to implement eMail and Message.
NSArray *activityItems;
activityItems = #[[self.mURL path],self.mURL];
UIActivityViewController *activityController =
[[UIActivityViewController alloc] initWithActivityItems:activityItems
applicationActivities:nil];
[self presentViewController:activityController
animated:YES completion:nil];
But how can I implement below view, especially youtube, youku, and tudou on iOS6?
Your app will have to provide a custom UIActivity that handles URLs and file paths. For an example, see my book: http://www.apeth.com/iOSBook/ch26.html#_activity_view
Look about halfway through that section, where I create a custom activity called Be Cool.
What you will actually do with the URL (i.e. how you are going to get this video sent to YouTube, or whatever it is you are trying to do) is entirely up to you.