Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Register app to open from Safari's "share" or "open in..." dialog not working. (though works from other apps)

I am trying to register my application to show up in Safari's "Open-in..." dialog when a user clicks the share button on any html webpage.

I have added the public.html (and public.data for good measure) content types to the Document Types in Xcode, as suggested in many answers: (See this question, this question, or this apple documentation.)

And, it seems to work. If I open a .pdf in Safari, I get the "open in My App" dialog at the top. I can also use the "open in..." dialog from other apps to share the document with My App.

To test it, I built DocInteraction as recommended in this answer, and if I create an html file, My App shows up in the share dialog.

However, My App still doesn't show up in the share dialog in Safari. When I run it in iOS7 on the iOS Simulator, I only get Mail, Twitter, and Facebook showing up:

No sign of My App anywhere!

The same goes when I test it on my real iOS device:

Sad Safari can't find My App

BUT, I would like you to note that it does seem to be possible! Look at the above screenshot.. SOMEHOW, Weibo has managed this feat. I don't know how, but for some reason Weibo shows up in this list even though My App doesn't.

And you know, actually, this sort of makes sense, given how many apps can probably open html pages. Here is DocInteraction running on my iOS device trying to share an html page:

Everybody wants some of the .html action!

There it is! My App! (It's actually called "Wulu Podify"). But there are so many apps who are hungry for .html pages, I guess Safari thinks it might be a bit overwhelming to provide them all.

BUT, this still begs the question, how did Weibo get themselves on that list? But, some further digging seems to show that actually Weibo seems to have gotten itself on EVERY list.

What can't Weibo open?

I'm not sure how they managed it, but maybe they are going about this differently.

Weibo's "I-will-open-any-document-you-throw-at-me-c'mon-try-it-c'mon" approach might solve this problem, but it's not ideal. I really only want to open html pages.

So. I guess my questions is three-fold:

  1. Is there a way to actually have my app show up in Safari's "Open In..." dialog?
  2. If not, how can I achieve what Weibo achieved, and show up in ALL the dialogs?
  3. Should I want to do that? It seems like it might be a bad idea.

Thanks for any help! I've been at this for a while!!


Update:

So, actually, I didn't realize it but I think Weibo might be a built-in option just like Facebook and Twitter. I assumed it was just there because I have it installed on my phone, but maybe it was one of the iOS6 defaults. I say that because when I test on the iOS6.0 Simulator, I suddenly see Weibo show up in the share screen, even though I definitely haven't installed it on my simulator.

Weibo for all!:( Sad face.

So maybe there is no way around this except for having it built in to Safari by apple..

like image 468
NHDaly Avatar asked Sep 25 '13 08:09

NHDaly


3 Answers

I know this is years later, but if anyone runs into this old question, as of IOS 8, Apple now allows app creators to make "extensions" which do allow you to add your app to the share menus.

Here is some documentation:

https://developer.apple.com/library/prerelease/ios/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html

like image 67
tomf Avatar answered Nov 15 '22 19:11

tomf


I fear what you want is not possible.

There is a difference between the Share dialog and the Open With dialog.

For the latter it's possible to register your app with document interaction, but the Share dialog only provides the native types (which Weibo is one of - see here: UIActivityViewController).

Also see this question on StackOverflow: is-it-possible-to-add-an-app-to-the-native-share-dialog

like image 36
TheEye Avatar answered Nov 15 '22 17:11

TheEye


its , called extension , fist create a new project and than --> file ->new -> target -> application Extension -> ####

and select your required extension and done....

like image 41
Patel Arjun Avatar answered Nov 15 '22 17:11

Patel Arjun