Since opening Settings.app with a prefs:// URL no longer works in iOS 5.1+, I'm wondering if I can launch Settings using private APIs?
NOTE: Not for the app store.
Using Private APIs
GitHub Project iOS-Runtime-Headers
Here are iOS Objective-C headers as derived from runtime introspection.
The headers were generated using RuntimeBrowser for iPhone.
Of specific interest to the Settings app, take a look at the Preferences.Framework.
I've never worked with this directly, but there seems to be other SO questions on the topic:
iOS Private API Documentation
Does anybody know how I can find the the headers for IOS5 Iphones/ipod. Jailbreak development
Get a screenshot while App is in background? (Private APIs allowed)
More...
Using URLs
According to this answer on SO, it is no longer possible to manually launch the Settings app using URLs.
Asked Apple through my developer account if there is a way to programmatically launch the WiFi Settings dialog. Here is the response:
"Our engineers have reviewed your request and have concluded that there is no supported way to achieve the desired functionality given the currently shipping system configurations."
If, however, you are using the native Twitter or Facebook SDK, then a dialog will appear asking the user to login if they are not. More information from this SO question, with example image below.
I don't have a particular answer. However, I would build on previous answer about Facebook or Twitter. I think, it make sense to disassemble Twitter or Social framework and find where this dialog is shown. If you will find this place, you can check the code behind "Settings" button.
There should be some API which switches to Preferences. However, it could be that code which does it lives in some service component which has entitlement, which you won't be able to get.
Related
My use case is fairly simple: I want do display the latest images of an Instagram profile I own on a public website I own.
For this purpose I've written an integration of the Instagram Basic Display API, registered an app with https://developers.facebook.com/apps/, implemented an automated access token renewal mechanism and everything works locally.
So, as I'm about to publish this feature to the website, I'm not able to find any official policy from Facebook that clearifies whether or not I'm required to put this app in "Live Mode".
Technically, "Live Mode" has no benefits to my use case and I'd find it way out of proportion to go through an App Review process, just to display a list of images that are my own anyway. So my question is:
Given this scenario, is it allowed to keep said App in "Development Mode", while still using its data for production purposes?
And: Are there any official statements on this, that any of you might be aware of and that I'm just not able to find?
I found this: https://developers.facebook.com/blog/post/2019/09/23/live-mode-for-production-use/
But even though the headline is fairly unambiguous, the article itself doesn't help making the issue any clearer...
It is OK to use Development mode in such case: https://developers.facebook.com/docs/app-review/introduction
If your app will only be used by app users who have a role on the app or claimant Business, App Review is not required and your app does not need to be switched to Live mode.
I built a native Windows app (non Windows-Store) that uses the Facebook API.
I wanted to make it public which means going through their review process which means (among other things) selecting the app's platform.
Sadly a native Windows app is not one of the choices: Facebook app platform selection screenshot
I found 2 unanswered questions on SO on the same topic:
one
two
How should this be done in a proper way?
Thanks in advance.
PS:
I found a post a few days ago where the poster said he registered such an app by setting the platform to "web site" (I didn't keep the link).
This does not look like a good long term solution and also I don't have a domain to provide.
In short, you must set your platform to Web.
The reason for this can be found in the official documentation on building your native logon flow. There is no secure way of creating a logon flow without a server, as this would imply storing your App Secret inside your binary or app config file.
So the recommended (and only supported) way is to create a server which stores the App Secret and handles authentication for you. And use this server from the WebBrowser/WebView control which you embed into your native application.
This means you use the logon flow from a web browser via a custom server and you should have a domain for it (a domain is quite cheap nowdays, it should not be a problem). So you are building a web app embedded into a native app.
For a successful login review do the following:
Choose Web as your platform
On the Settings page in the Advanced tab choose Native App.
Create a screencast (Start your app, logon, use all the requested permissions and that's it. Do not edit it!) and upload it to the web (YouTube/Vimeo/...)
When submitting provide a link to your screencast.
I'd like to be able to send invitation in an email to a specific "event" happening inside my iOS app. So I figured I'd need to use custom URL. That's fine.
But I'd also like to be able to handle the user that doesn't have the app installed yet, to be taken to a mobile Safari and to the webpage with installation instructions for the app.
What would be the best way to do it?
I could try the following:
In the email I send a link to a http://www.example.com/joinevent/?id=foo
User is taken to a Safari webpage that sends a redirect to mycustomscheme://joinevent/?id=foo
If the user doesn't have the app installed this redirection won't work and he stays in the Safari - I could then handle the displaying of installation instructions probably.
But this approach doesn't seem "natural" for me. Is there a better/more native way to do it?
Try http://rdrct.it
It is a web service that allows you to achieve exactly this functionality very easily.
Full disclosure - I created rdrct.it
Here's the basics:
Login to the site, create a project for your particular app. Choose a unique code (this could be the name of your app).
You'll then be provided with a URL in the form: http://rdrct.it/uniqueCode
Once you've done that, you need to register the app's ID in the app store, and also details about the custom URL scheme. Tick "Auto-redirect" - what it will then do is try to open the app, and if that fails, it will automatically send the user to the app store.
If the app is opened, then the querystring is also passed to the app, so in your example case, the device will have been served: mycustomscheme://joinevent/?id=foo
It also works across multiple device types, so if you have the app available for Blackberry, Android or Windows Phone, then it will also do the same for those depending on which device type the user is using.
Like I said, I created it, but it should solve your problem.
If you are using Distimo to track you app analytics, they provide a shortlink to your apps that can be used also used to track conversions. It shows a custom page depending on the device used to access. This is especially convenient if you have the same app published in the AppStore, Google Play, Amazon, etc.
I am building a HTML5 based mobile web app for iPhone. I need to check whether user has specific application that I suggest. I heard that each iPhone application has unique URL scheme to detect their app indentity.
Therefore, I've read this article to get an idea.
Is it possible to register a http+domain-based URL Scheme for iPhone apps, like YouTube and Maps?
However, this is not perfect answer to make what I am trying to make.
here is what might happen
User clicks a recommendation app on mobile web browser.
Check with application iTunes URL and URL scheme.
If the user has the installed application, it returns 'installed'
==> In this case, the screen returns back to mobile browser.
If the user does not have the installed application, it returns 'uninstalled'
==> In this case, the screen moves to App Store.
I am running mobile web app with PHP language.
Thank you.
this is not possible I'm afraid. To be honest I'm glad, as there are real privacy concerns if any old web page can detect which apps I have installed.
That's definitely not a good thing!
UPDATE: If you're happy to go native, this library will do what you want.. http://www.cocoacontrols.com/platforms/ios/controls/ihasapp
If you know that a url scheme for the app exists then you can open it via a web link like this, "myapp://". With this there are some round about ways you can effectively check if a certain app exists.
See this related stackoverflow post
I want to develop a facebook app. The only thing I want to know is will this (the fact that I am developing an app) be shared to my friends? If yes how can I disable that?
I don't really understand your question - what exactly do you think would be shared with your friends?
Unless you post something from your app there's no way for a third party to even know that it exists, let alone who runs it. Even the app's info page won't show the developer info unless they choose to enable that.
There's also test accounts you can create via the app edit interface or API ( https://developers.facebook.com/docs/test_users/ ) to test the app without using your own
{edit} Also, as Derek says, you can use sandbox mode while testing so the app and its content aren't visible to anyone except the admins, developers and test users{/edit}
You can enabled "Sandbox mode" which should disable all notifications and public access to your app.