Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there an alternative to (the deprecated) canOpenURL in iOS 9?

I am using apple's canOpenURL: and openURL: methods to detect & open other application. But as these methods are deprecated in iOS9, They returns NO.

Is there any alternate to manage this?

Thanks

like image 486
shivam Avatar asked Jul 17 '15 07:07

shivam


3 Answers

You need to provide "whitelist" to your plist

<key>LSApplicationQueriesSchemes</key>
<array>
 <string>urlscheme</string>
 <string>urlscheme2</string>
 <string>urlscheme3</string>
 <string>urlscheme4</string>
</array> 

See for more details

iOS 9 has made a small change to the handling of URL scheme.

More details

like image 81
Tikhonov Aleksandr Avatar answered Oct 19 '22 22:10

Tikhonov Aleksandr


Here you can find some information.

as the article said:

Up until iOS 9, apps have been able to call these methods on any arbitrary URLs. Starting on iOS 9, apps will have to declare what URL schemes they would like to be able to check for and open in the configuration files of the app as it is submitted to Apple. This is essentially a whitelist that can only be changed or added to by submitting an update to Apple. It appears that certain common URLs handled by system apps, like “http”, “https”, do not need to be explicitly whitelisted.

In short: Apple wants to prevent apps from being able to scan a user's device and know which apps are installed

So to answer to your question: actually there is no solution, because apple want exactly to prevent this kind of behaviour

like image 2
Max_Power89 Avatar answered Oct 19 '22 21:10

Max_Power89


In some contexts, if you need to open arbitrary deeplinks, the Universal App Links can be a solution: you point to the website of the app (which needs to implement this behaviour) and iOS 9 will automatically deeplink to the adhoc app.

like image 1
MonsieurDart Avatar answered Oct 19 '22 21:10

MonsieurDart