Calling external application from IOS 9 webview with Nativescript - ios

I'm trying to open external application from webview on IOS 9 and I keep getting this error.
ispmobile://param?TID=enter_your_id
-canOpenURL: failed for URL: "ispmobile://param?TID=enter_your_id" - error:
"This app is not allowed to query for scheme ispmobile"
When I looked around, apparently there is a restriction from IOS 9 and on when calling external app and the solution that I was pointed to was to implement LSApplicationQueriesSchemes in the info.plist.
info.plist
<key>LSApplicationQueriesSchemes</key>
<string>ispmobile://</string>
I have done that and i still get the "This app is not allowed to query for scheme ispmobile" error
Any suggestions on how to fix this?
thanks in advance

Related

How to check if an iOS app is installed without canOpenURL [duplicate]

This question already has answers here:
canOpenUrl - This app is not allowed to query for scheme instragram
(3 answers)
Closed 1 year ago.
As described here to verify if an app is installed "some.bundle.id://" scheme and canOpenURL technique can be used.
However, I've discovered in SwiftUI 5 and iOS 14.1 that it doesn't always work, e.g.
// Works
UIApplication.shared.canOpenURL(URL(string: "com.garmin.connect.mobile://")!)
// Doesn't work
UIApplication.shared.canOpenURL(URL(string: "com.fitbit.FitbitMobile://")!)
I've found the error below in Mac's Console App log connected to iPhone. Looks like Fitbit app is blocking the queries:
default 12:03:34.339735-0700 2fahub -canOpenURL: failed for URL: "FitbitMobile://app" - error: "This app is not allowed to query for scheme fitbitmobile"
While in my Xcode's debug window I can see this:
2021-05-30 12:46:16.416998-0700 2fahub[588:100068] -canOpenURL: failed for URL: "com.fitbit.FitbitMobile://" - error: "The operation couldn’t be completed. (OSStatus error -10814.)"
In my app query permissions are set correctly
<key>LSApplicationQueriesSchemes</key>
<array>
<string>com.garmin.connect.mobile</string>
<string>com.fitbit.FitbitMobile</string>
</array>
What else can be used to make sure that it always works? Is there anything similar to Android's PackageManager API in iOS?
Update #1:
Actually the answer provided by Fitbit forum was correct. The scheme for Fitbit must be "fitbit://" and it's absolutely not clear why, given that bundle ID for this app is com.fitbit.FitbitMobile. 'fitbit' is not the app name, neither it's the whole bundle ID. In Garmin case I must use the whole bundle ID to make it working. Would be good to know what the rules really are here. What should I do if need to add more apps to verify?
Seems the Fitbit's URL Scheme is not com.fitbit.FitbitMobile://(this is it's bundle id)\
Try with fitbit://
These two posts seem to have it working
Answer from 2016 - community.fitbit.com
Answer from 2020 - community.fitbit.com

canOpenURL, problems adding site to whitelist

I am currently updating an app and using Xcode 7.3. The app utilizes iAd banner ads and Flurry interstitial ads. When the iAd banner goes to load I get the error.
-canOpenURL: failed for URL: "about:blank" - error: "This app is not allowed to query for scheme about"
The banner loads just fine, and everything works as planned.
In researching this I found the method was deprecated for privacy reasons. However, I can not even find it in any of my files. Also, I have read about adding sites to a whitelist with LSApplicaitonQueriesSchemes. I did this in my plist with the following strings in the array;
about:blank
about
blank
The error then reads;
-canOpenURL: failed for URL: "about:blank" - error: "(null)"
I can't seem to get rid of the error no matter what I do. Does anyone have any ideas of what to do? I see a lot of info for urls that go to social media apps and such, but not for the about:blank url. Thanks in advance.
You only need to whitelist about since that is the scheme being accessed.
The message -canOpenURL: failed for URL: "about:blank" - error: "(null)" means you have everything working. iOS logs that informational message when an app tries to call canOpenURL: for a whitelisted scheme but there is no app installed that supports the given scheme. It's a confusing debug message from iOS that can be safely ignored.

afnvision:// URL Scheme

iOS application is calling following error:
-canOpenURL: failed for URL: "afnvision://" - error: "This app is not allowed to query for scheme afnvision"
I have looked LSApplicationQueriesSchemes and all calls to canOpenURL , but can't find such a url scheme any where. I have not added this url scheme in my app.
I feel appsFlyer is calling this. Because I get two logs
[1669:49374] AppsFlyer SDK version 2.5.3.16 started
[1669:49374] -canOpenURL: failed for URL: "afnvision://" - error: "This app is not allowed to query for scheme afnvision"
Anyway I can stop this or know which all URL schemes my app calls when it is on App store.
In you info.plist file, add afnvision under LSApplicationQueriesSchemes as shown in the screenshot below:

Login error in iOS 9 Facebook SDK

I've seen many questions on StackOverflow about this problem, but none solved my issue.
I've created a sample app containing only the FB login button, followed the Facebook iOS 9 setup documentation, inserted ATS configs in info.plist and tried to run.
Everything works on iOS Simulator (I'm running XCode 7.1) except for a warning, but i wasn't very concerned because Facebook docs days it can be ignored.
This is the warning tho
-canOpenURL: failed for URL: "fbauth2:/" - error: "(null)"
Login works fine, and returns to the MainViewController logged in.
Problem occurs when i try to run it on device (iPhone 5, iOS 9.0.2)...
View switches to safari but after loggin in and confirming permissions, Safari fails to redirect back to the app, and says the address is invalid.
What is wrong with my application? Is there something i didn't consider?
Thanks in advance.
IOS 9 URL Shchemes Update : iOS 9 introduces LSApplicationQueriesSchemes to allow apps to query if other apps are installed.
1- If a url scheme is declared and calling canOpenURL(scheme)
YES if a installed app supports that URL scheme
NO if no app supporting that url
syslog will show canOpenURL: failed for URL: "urlScheme://" - error: null
2- If a url scheme is not declared and calling canOpenURL(scheme)
always return NO
syslog will show canOpenURL: failed for URL: "urlScheme://" - error: null
In iOS 9, the developer must add these info.plist LSApplicationQueriesSchemes
<array>
<string>urlscheme</string>
<string>urlscheme2</string>
<string>urlscheme3</string>
<string>urlscheme4</string>
</array>

-canOpenURL: failed for URL: "fbauth2:/" - error: "(null)" for ios 9 (swift)

I have seen many problems like my question.And i have tried all solution .but i am getting this same problem.
My Problem:
when i click facebook login button ,its opening in safari and with in some seconds my page went off and return to facebook login button
In both simulator and device i am getting this problem
My warning:
-canOpenURL: failed for URL: "fbauth2:/" - error: "(null)"
Here is my.plist :
How to fix this problem !
I also updated my plist with fbapi,fbauth string alone.But that time also not able to resolve my problem
I think it all about the Facebook SDK. I also face this problem .So my suggestion is to use the latest Facebook SDK.If you are using only for login means - you can add coreKit,LoginKit and use fbauth2 alone for your problem.No need to add others items.Latest Facebook SDK. Or try to use the V4.6.0 SDK.Here is the link Older SDK
Hope this help

Resources