Does iOS Sharing sheet recognize all social apps on the device? - ios

Our team is building an iOS app from which a user can share media content through social apps present on his iPhone. While testing how other apps behave, I observed that not all apps show all the available sharing options.
Specifically, I don't see the following apps in the sharing options:
Kik, WeChat, Reddit, Youtube, GroupMe, Band.
I have all these apps on my device. So expected all these apps to be shown for sharing. Should the base app explicitly handle all the sharing options?

No. Only following ActivityTypes are supported by iOS. Of course you can exclude some of these activities if you want to.
UIActivityTypePostToFacebook
UIActivityTypePostToTwitter
UIActivityTypePostToWeibo
UIActivityTypeMessage
UIActivityTypeMail
UIActivityTypePrint
UIActivityTypeCopyToPasteboard
UIActivityTypeAssignToContact
UIActivityTypeSaveToCameraRoll
UIActivityTypeAddToReadingList
UIActivityTypePostToFlickr
UIActivityTypePostToVimeo
UIActivityTypePostToTencentWeibo
UIActivityTypeAirDrop

For the app to appear in the share sheet:
The app needs to implement a sharing extension (not all do)
The sharing extension must support the type of data that is being shared (text, url, image, video...).
The user must have selected that sharing extension (by tapping on the "More" button at the end of the list)

Related

Show only email+ (Any specific app) as shareable option in UIActivityViewController

Is there any way by which we can get rid of all default sharing options provided by UIActivityViewController and display only specific apps (in my case Email+) as sharing medium.

How to share URL using Xamarin iOS

I'm developing an app for my local newspaper. When you press the "Share" button, I want the standard iOS share interface to appear allowing users to share the URL of an article with Facebook, Twitter, etc. I'm trying to use the UIActivityViewController, and while it appears, it's not giving me all of the options.
Here's the code I use:
NSObject[] activitiesItems = {
new NSString(post.Title),
new NSUrl(post.URL)
};
var activityController = new UIActivityViewController(activitiesItems, null);
PresentViewController(activityController, true, null);
When the UI opens, this is all I see (no Twitter or Facebook):
This is in comparison to what I see when I share a page from Safari, which has the Facebook and Twitter options, along with a variety of others:
What do I have to change in my code to allow more of these options to appear?
1) Your code is fine
2) On your iOS Simulator go to the Setting and login to Twitter and/or FaceBook accounts and retest your app.
iOS Simulator Setting (botton off screen):
Here is my Simulator view with me logged into Twitter but not Facebook using the same code you posted:
3) Safari is a using a custom ViewController to display what you are seeing... If you actually try to share a link via that Twitter button you will be force to login..
4) Use an actual device for complete testing of all the possible sharing applications installed.
Those options are only supposed to show when you are logged in to an account in the Settings app for FB and Twitter. They are hidden if not.
However that doesn't really explain why they show up in Safari.
Perhaps including the NSString for post.Title in the items array is causing it to exclude some sharing options.

Share text AND media with WhatApp Share Extension

I'm using a UIActivityViewController to enable the user to share photos and videos created with my app. I attached two UIActivityItemProviders to it: one for the media and one for a default text to use ("Created with...").
This works well for all share extensions I tested—except for WhatsApp. WhatsApp only shows the text in the message dialog—no photo or video. When I leave the text blank, however, it will show the media file.
Is there any way I can share a photo or video with a default text/caption via WhatsApp?
I'm facing the same challenge. I implemented my own extension using https://github.com/sascha/SSCWhatsAppActivity. The downside is that you'll get two WhatsApp entries when sharing. WhatsApp's own one, and the custom one. I tried excluding WhatsApp's own extension using UIActivityViewController.excludedActivityTypes with the activityType net.whatsapp.WhatsApp.ShareExtension but since iOS 8.1 this is not possible anymore (on purpose or a bug). More on that here: http://johnszumski.com/blog/excluding-third-party-apps-from-ios-8-share-sheet
My conclusion, there is no way to provide both text + media to WhatApp own sharing extension. I decided to keep my custom WhatsApp sharing extension and name it "WhatsApp (+Image)" so the user can distinguish the two.

Pop WeChat/Weixin Safari-like Share Sheet in my app UIActivityViewController?

I'm trying to pop the built in Safari share WeChat in my iOS app. But can't find a way to make WeChat app show up in the UIActivityViewController!
I noticed that the WeChat app icon shows up when sharing images from the Photo Gallery, and Safari link sharing. The native Notes app doesn't have WeChat option.
Not sure how that's working, any help is appreciated! Thanks!
This is done using "Share" extensions. See Apple docs for more information: https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/ShareSheet.html#//apple_ref/doc/uid/TP40014214-CH12-SW1
Regarding why some apps appear in certain sharing contexts but not in others, this is because a Share extension has to declare to iOS which kind of data it supports for sharing. Presumably, WeChat developers did not enable their Share extension for "pure" text content, like in the Notes app. See here for how to set which kind of data a Share extension accepts: https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#//apple_ref/doc/uid/TP40014214-CH21-SW8
Unfortunately you won't be able to add the WeChat Share extension on behalf of them if they didn't allow it, but you might be able to use some WeChat API to develop your own app extension with text content enabled.
Hope it helped.
WeChat's icon won't appear in UIActivityViewController if you try to share anything other than URL. WeChat only accepts URL posts. This code snippet should work for you:
NSArray *items = #[[NSURL URLWithString:#"http://google.com"]];
UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];

Create iOS link to an App in the app store - best way?

Here are my requirements:
1. Create links to a single app in the app store 2. Access the links either from inside an app, on the device generally (e.g. mail link) or from a PC (e.g. via facebook share link) 3. Open links using iPhone or iPad running iOS 5+
I have done some digging around and come up with the following options:
http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=487547243
http://itunes.apple.com/gb/app/anyValue/id487547243?mt=8
http://itunes.com/apps/seligmanVenturesLtd/mouseTrapFree
http://itunes.com/apps/mouseTrapFree
itms://itunes.com/apps/mouseTrapFree
itms-apps://itunes.com/apps/mouseTrapFree
Just wondering if one (or some) of these are better than other?
Thanks.
Ok, so have done a lot of research/testing and here is my conclusion:
Links you use in your code should not rely on the 'current' name of you app, since this might change over time (e.g. Light Alarm Lite vs Light Alarm Free). Therefore the following 4 are out IMHO:
http://itunes.com/apps/seligmanVenturesLtd/mouseTrapFree
http://itunes.com/apps/mouseTrapFree
itms://itunes.com/apps/mouseTrapFree
itms-apps://itunes.com/apps/mouseTrapFree
That leaves itunes and phobos URLs. I have just tested both URLs via the iOS 6 share functionality (so this might be different on iOS 5, but given numbers are reducing daily for that I dont really mind). I tested accessing via SMS, Email, Facebook, Twitter (on an iPhone 5 and using a Mac).
Both url types produced near identical results, except for the following:
Phobos:
e.g. http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=346542660
+ None
- Sharing this link on facebook created a facebook link without any image... this was the showstopper for me that will mean I use iTunes urls going forward (see below).
iTunes
e.g. http://itunes.apple.com/gb/app/appName/id346542660?mt=8
+ When opening link on iphone 'Mail' app the app store opened within the 'Mail' app and no tabs along the bottom appeared, so arguably this creates increased focus on your app
- None
In summary, I will be going with itunes type urls going forward. eg:
e.g. http://itunes.apple.com/gb/app/appName/id346542660?mt=8
(Note: you don't have to stipulate the '/appName' in this url, just keeping it as '/appName/' works fine, which means you dont have to worry if you app name changes over time.
Cheers, Charlie
URL/Link to an app on the app store can be created very easily but there are several ways to achieve the end result. First of all we need to be clear on the purpose of the link (For ex. link might be used for Facebook posts or used inside an app for urging users to rate the app through in-app alerts/buttons). We can broadly categorize how we will use the link in 3 categories:
1. We want to use the link publicly outside the iOS (or OS X) domain. Means you can use this link to share on your Facebook wall or you want to embed the link in mail. I said outside iOS domain because your friends who doesn't have iPhone (or any other iOS device) or MacBook they might also use click that link from Facebook or their mail app/client.
2. We want to use the link inside iOS (or OS X) domain. Means when we are certain that our link will be clicked by device using iOS or OS X.
3. We want to send the app user (already a user of our app) to specific section (like review section) of the app on app store.
For category 1 and 2 it's best to use this type of URL:
https://itunes.apple.com/app/dots-a-game-about-connecting/id632285588?mt=8
When you embed this link then it can result in several outcomes:
If user clicks on this link from iPhone (from any iPhone app or mail app on iPhone): Your app page on App Store will open directly
If user clicks on this link from any Android Phone or Browser (Chrome/Safari/etc.): Your app page on itunes.apple.com website will open inside default browser. Even if you are opening it on you MacBook it won't open iTunes App Store but will display you app page in Browser itself.
Side Note: There are several places on web where below mentioned sort of link is also suggested:
http://appstore.com/dotsagameaboutconnecting
When you embed this link then it can result in several outcomes:
If user clicks on this link from iPhone or MacBook: Your app page on App Store will open directly. So this link is a bit better for MacBook users as it send users of MacBook directly to iTunes instead of staying within Safari browser.
If user clicks on this link from any Android Phone or Browser (Chrome/Safari/etc.): If user is clicking from PC that has iTunes installed then this link will open your app on iTunes else (on Android devices and PC that doesn't have iTunes) it will open a Apple.com page displaying "Download iTunes" without any mention of your app. Screenshot of that page below:
So If you are not sure about who will click on your link (outside/inside iOS domain) or If you want to be on safer side then I recommend first approach. Read here on how to create specific link for your app.
For category 3 simply use below code in some function/action:
NSString *myAppID = #"632285588";
NSString *url = [NSString stringWithFormat: #"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%#", myAppID];
//iOS7 doesn't approve above format so add iOS7 specific format
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
url = [NSString stringWithFormat: #"itms-apps://itunes.apple.com/app/id%#", myAppID];
}
[[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];
For details on above code see this answer.
For developers who are developing first version of app and app is still not published on app store there is always a quandary about how to get the right link for your to be published app. For that:
Get your app ID from iTunesConnect. Use iTunesConnect to create your new app - give it a name, description, icon, screenshots, etc. Once app is created on iTunesConnect (without even submitting the app), you can get the Apple ID from the Identifiers section for the app.
You should not have any problems with the following one:
http://itunes.apple.com/gb/app/notebookpro/id<APP_ID>?mt=8
I believe, it will be opened on all major browsers/OS.
https://itunes.apple.com/app/id##app-id##?mt=8
Replace ##app-id## with real app-id.
For example:
https://itunes.apple.com/app/id346542660?mt=8
Summary
No country code. Ex: gb
No appName, only app-id.
https protocol.
I'm using the itms-apps: approach in our app, which also allows you to select to which "section" of your app the user will land.
So if you want to show them the reviews, this is what I use: itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=XXXXXXX
and for updating to the latest version of our app: itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftwareUpdate?id=XXXXXXX&mt=8

Resources