iOS9: canOpenURL returning false for WhatApp's url scheme

11,631

Solution 1

In iOS 9 you must whitelist any URL schemes your App wants to query in Info.plist under the LSApplicationQueriesSchemes key (an array of strings):

For example:

enter image description here

So in your case, instead of fb and twitter you will have to specify whatsapp.

Note that this mechanism only applies to canOpenURL and not openURL. You do not need to have a scheme listed in Info.plist to be able to open it with openURL. Hope that helps.

Solution 2

In addition to @z22's answer if you need to add it textually (e.g. with Xamarin) then it looks like this:

    <dict>
        ... 

        <key>LSApplicationQueriesSchemes</key>
        <array>
            <string>whatsapp</string>
        </array>
    </dict>
Share:
11,631
Mayank Jain
Author by

Mayank Jain

iOS App Developer, Android App Developer, Mobile App Developer, Front End Developer, Full Stack Developer, React Native Developer #SOReadytoHelp Linkedin Facebook Email: [email protected] Skype: live:ermayankjain

Updated on July 10, 2022

Comments

  • Mayank Jain
    Mayank Jain almost 2 years

    In my current project I need to share text on whatsapp from iOS app.

    Here is my code to share text on whatsapp:

    NSURL *whatsappURL = [NSURL URLWithString:@"whatsapp://send?text=Hello%2C%20World!"];
    if ([[UIApplication sharedApplication] canOpenURL: whatsappURL]) {
        [[UIApplication sharedApplication] openURL: whatsappURL];
    }
    

    but canOpenURL always returning false in iOS9.

    Is there any iOS9 privacy policy? Can anyone help me out?

  • z22
    z22 over 8 years
    @MayankModi Glad to help :)
  • Juan Fran Jimenez
    Juan Fran Jimenez over 7 years
    For the lazy ones: here is the code for your plist (add it at the end of the main dict node): <key>LSApplicationQueriesSchemes</key> <array> <string>whatsapp</string> </array>