Why so many canOpenURL? - ios

When running AlipaySDK demo from https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1, some odd things happened.
From the log output in xcode, there are more than 10 logs to say
-canOpenURL: failed for URL: "momochs://" - error: "This app is not allowed to query for scheme momochs
There are no source code in demo to print out such things by simple searching. And the static lib just does payment and shouldn't do such checking according to my understanding.
Question here is to figure out why this happened or something wrong for the demo or other setup ?
2016-03-02 15:58:55.998 AliSDKDemo[4491:1610409] -canOpenURL: failed for URL: "momochs://" - error: "This app is not allowed to query for scheme momochs"
2016-03-02 15:58:55.999 AliSDKDemo[4491:1610409] -canOpenURL: failed for URL: "tenpay://" - error: "This app is not allowed to query for scheme tenpay"
2016-03-02 15:58:55.999 AliSDKDemo[4491:1610409] -canOpenURL: failed for URL: "com.icbc.iphoneclient://" - error: "This app is not allowed to query for scheme com.icbc.iphoneclient"
2016-03-02 15:58:56.000 AliSDKDemo[4491:1610409] -canOpenURL: failed for URL: "wx2654d9155d70a468://" - error: "This app is not allowed to query for scheme wx2654d9155d70a468"
2016-03-02 15:58:56.000 AliSDKDemo[4491:1610409] -canOpenURL: failed for URL: "meituan0000://" - error: "This app is not allowed to query for scheme meituan0000"
2016-03-02 15:58:56.000 AliSDKDemo[4491:1610409] -canOpenURL: failed for URL: "sinaweibo://" - error: "This app is not allowed to query for scheme sinaweibo"
2016-03-02 15:58:56.001 AliSDKDemo[4491:1610409] -canOpenURL: failed for URL: "dianping://" - error: "This app is not allowed to query for scheme dianping"
2016-03-02 15:58:56.001 AliSDKDemo[4491:1610409] -canOpenURL: failed for URL: "diditaxi://" - error: "This app is not allowed to query for scheme diditaxi"
2016-03-02 15:58:56.002 AliSDKDemo[4491:1610409] -canOpenURL: failed for URL: "cn.12306://" - error: "This app is not allowed to query for scheme cn.12306"
2016-03-02 15:58:56.002 AliSDKDemo[4491:1610409] -canOpenURL: failed for URL: "mtxx://" - error: "This app is not allowed to query for scheme mtxx"
2016-03-02 15:58:56.002 AliSDKDemo[4491:1610409] -canOpenURL: failed for URL: "youku://" - error: "This app is not allowed to query for scheme youku"
2016-03-02 15:58:56.003 AliSDKDemo[4491:1610409] -canOpenURL: failed for URL: "baidumap://" - error: "This app is not allowed to query for scheme baidumap"
2016-03-02 15:58:56.003 AliSDKDemo[4491:1610409] -canOpenURL: failed for URL: "iosamap://" - error: "This app is not allowed to query for scheme iosamap"

Why so many canOpenURL ?
Because they want to know which apps are installed, up to iOS8 this was an ugly trick to know which apps you have installed, they basically have a list of app schemes they want to know about, so they will do consecutive canOpenURL calls for each app scheme, then harvest the data and send it back to their servers for whatever purpose they need it to.
Thankfully this is no longer allowed in iOS9, since you need to provide the list of schemes your app will do canOpenURL calls against, calling an url scheme that's not in your info.plist will result in that log warning you see
The odd thing is I got log information as below, but can't find any
source code to print out such things.
The SDK isn't open sourced from what I see, so there's no way for you to peek into their code, the code is inside the static libs *.a files
Just wonder how can they do this without source code ? Any technology to >achieve this ? thanks
It's nothing special, if you write a project and build it as a static library you'll get the compiled source in .a files, that you can import to other projects and use there, as long as you have the proper header files, this is exactly how AliPay does it
Hope this clears up the confusion, I recommend to leave it as is, don't allow them to pull off stunts like that.
You can always add the list of those schemes into your info.plist, but then you'll have to explain to apple yourself why you need to open so many apps, again, very bad idea, simply ignore it and you're good to go!

Related

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.

Error logs while signing using Facebook

I am getting following error when trying to login via FB
I am using FB sdks 4.8.0
Error log :
-canOpenURL: failed for URL: "fbauth2:/" - error: "(null)"
The error you see in the console is normal. You will see this when calling canOpenURL and the corresponding app isn't not installed. The error can be safely ignored.
For same question : https://stackoverflow.com/questions/33958000/facebook-login-error-in-ios9
Also Set your info.plist as per image

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:

canOpenUrl fail "org-appextension-feature-password-management" (PayPal)

PayPal payment not working as I get failure on opening a URL
-canOpenURL: failed for URL: "org-appextension-feature-password-management://" - error: "(null)"
In accordance with the documentation I added org-appextension-feature-password-management to my info.plist, but I still get the below error.
Ideas what I might have overlooked?
Seems to be a bug in PayPal SDK.
The error only occurs in the PayPalEnvironmentNoNetwork setting. When you switch over to PayPalEnvironmentSandbox or PayPalEnvironmentProduction the error does not persist (assuming you have set LSApplicationQueriesSchemes correctly).

Google plus sign in crashes in ios 9

while sign in the app in ios 9 through the google plus account I got these message in my debug area. but it is working well for ios 8
-canOpenURL: failed for URL: "com.google.gppconsent.2.4.1://" - error: "This app is not allowed to query for scheme com.google.gppconsent.2.4.1"
-canOpenURL: failed for URL: "com.google.gppconsent.2.4.0://" - error: "This app is not allowed to query for scheme com.google.gppconsent.2.4.0"
-canOpenURL: failed for URL: "com.google.gppconsent.2.3.0://" - error: "This app is not allowed to query for scheme com.google.gppconsent.2.3.0"
-canOpenURL: failed for URL: "com.google.gppconsent.2.2.0://" - error: "This app is not allowed to query for scheme com.google.gppconsent.2.2.0"
-canOpenURL: failed for URL: "com.google.gppconsent://" - error: "This app is not allowed to query for scheme com.google.gppconsent"
-canOpenURL: failed for URL: "hasgplus4://" - error: "This app is not allowed to query for scheme hasgplus4"
-canOpenURL: failed for URL: "googlechrome-x-callback:" - error: "This app is not allowed to query for scheme googlechrome-x-callback"
-canOpenURL: failed for URL: "googlechrome:" - error: "This app is not allowed to query for scheme googlechrome"
How can I resolve this issue?

Resources