UIActivityViewController excludedActivityTypes not work - ios

I want to exclude Weibo and WeChat, and set the following code:
let av = UIActivityViewController(activityItems: items, applicationActivities:nil)
av.excludedActivityTypes = [.postToWeibo, .postToTencentWeibo]
self.present(av, animated: true)
No matter what I did, the two apps still show up on UIActivityViewController. But excluding mail and copyToPasteboard are both work
av.excludedActivityTypes = [.postToWeibo, .postToTencentWeibo, .copyToPasteboard, .mail]
Any other way to exclude them? Thanks

Related

How can I find custom UTIs App support in iOS?

I'm developing a custom UTI like "com.xyz".
All the apps supporting this UTI may be shown in the UIActivityViewController.
Code snippet:
let extensionItem = NSExtensionItem()
let data = NSItemProvider.init(item: nil, typeIdentifier: "com.xyz")
extensionItem.attachments = [data]
let activity = UIActivityViewController(
activityItems: [extensionItem],
applicationActivities: nil
)
present(activity, animated: true, completion: nil)
In order to have a better user experience, I would like to check if the iOS device has any App supporting "com.xyz" before presenting the UIActivityViewController.
Just like check URL:
UIApplication.shared.canOpenURL(URL(string: urlStr)!)
Otherwise the user may see an empty UIActivityViewController without any app.
As I know, there is an ActivityNotFoundException could be try and catch to handle the app not found situation in Android.
Does iOS support something like ActivityNotFoundException?
THANKS! 🙏

UIActivityViewController excludedActivityTypes not working with custom UIActivityTypes

I'm having trouble excluding custom UIActivityTypes from UIActivityViewController
I have…
extension UIActivityType {
static let fbMessenger = UIActivityType("com.facebook.Messenger.ShareExtension")
static let telegram = UIActivityType("ph.telegra.Telegraph.Share")
}
and then
let activityController = UIActivityViewController(activityItems: <sharingItems>, applicationActivities: nil)
activityController.excludedActivityTypes = [.postToFacebook, .fbMessenger, .telegram]
present(activityController, animated: true)
With the excluded types above, the presented share sheet correctly excludes Facebook, but still shows the 2 custom types (Messenger and Telegraph)
Interestingly, checking the activityType in completionWithItemsHandler when selecting either of the 2 that I was trying to exclude shows they do have the raw values as above.
Can custom UIActivityTypes be excluded? Any thought on what I'm missing?

Add frequently used app for fast sharing swift

I am working on a sharing functionality where I have achieved the basic sharing part and is working perfectly. Below is the code for same
let message = "Download the app from the link below"
//Set the link to share.
if let link = NSURL(string: "http://yoururl.com") {
let objectsToShare = [message,link] as [Any]
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
activityVC.excludedActivityTypes = [UIActivityType.airDrop, UIActivityType.addToReadingList]
self.present(activityVC, animated: true, completion: nil)
}
The above code is working great and gives the output as seen in the screenshot
What I want is to have an extra icon/option to share the content for the frequently used app.
for e.g. I use Whatsapp frequently so the share window should show WhatsApp icon somewhere besides "More".
any help will be highly appreciated. TIA
This can't be done because the share sheet is a library provided by apple and only the user can rearrange icons on their own!

Share image and text to whatsapp in single share in swift 4

Could anyone suggest me how to share image with text to whatsaap or any alternative for the same.I have tried it using UIActivityViewController but its possible to share image+text simultaneously on mail bt not on whatsaap .
Help will be appreciated.
Thank you :)
code is as follows:
let textToShare = "Hello world"
let myWebsite = NSURL(string:"https://www.apple.com/")
let img = UIImage(named:"BookImg")
let shareall = [img!,textToShare,myWebsite!] as [Any]
let vc = UIActivityViewController(activityItems: shareall, applicationActivities: nil)
vc.popoverPresentationController?.sourceView = self.view
self.present(vc, animated: true, completion: nil)
Sorry, but you can't post Images and Text together on WhatsApp. However, you can post one at a time. As Whatsapp does not provide any API you can add captions and post images with text.
For your reference , WhatsApp:
http://www.whatsapp.com/faq/en/iphone/23559013
An easy alternative is handing the image part from your server side. Host it and share the link along with the caption. the image will be shown automatically through the URL you are sharing.
It will appear like below,
SS: https://ibb.co/7tpqm8S

Can't add title and description in facebook Share

I am trying to implement the Facebook Share in my quiz app. The content is app store link and quiz score.Which is working fine in simulator but in device shows in different and not showing my description. Here is my Code
func ShareFB() {
let fbVC = SLComposeViewController(forServiceType: SLServiceTypeFacebook)
fbVC?.setInitialText("Hey! I scored \(String(describing: UserDefaults.standard.string(forKey: "TOTAL_SCORE")!)) in Test. This is really interesting! You can also try.")
fbVC?.add(URL(string: "https://itunes.apple.com/us/app/test-app/i?ls=1&mt=8"))
fbVC?.add(UIImage(named: "AppIcon"))
present(fbVC!, animated: true) { _ in
}
}
also attaching screen Shot of simulator and device.
now you cannot share image, text and url simultaneously in facebook. also Facebook does not allow pre filled text now
Why don't you use UIActivityController for such functionality?
Example:
let shareItems = [
"Hey! I scored \(String(describing: UserDefaults.standard.string(forKey: "TOTAL_SCORE")!)) in Test. This is really interesting! You can also try.",
URL(string: "https://itunes.apple.com/us/app/test-app/i?ls=1&mt=8"),
UIImage(named: "AppIcon")] //Add the items you want to share in this array
let activityViewController = UIActivityViewController(activityItems: shareItems, applicationActivities: nil)
self.present(activityViewController, animated: true, completion: nil)
Edit:
Check this out:
https://stackoverflow.com/a/30020929/5716829
According to Facebook's 2.3 policy rules, you can't share pre-filled content because of policy violation. Facebook does not allow you to share the pre-filled user message parameters with any content the user didn't entered himself.
If you want to share content on Facebook then user has to write/enter himself in Facebook prompt message dialog.
For more info, please visit: https://developers.facebook.com/docs/apps/review/prefill

Resources