How do you request a passcode entry when linking out from an app - ios

My app keeps failing Apple's review process because it's rated for kids, yet links out to websites without parental controls. I was wondering if there is anything I can put in the HTML link that will force the use to put in their passcode (or thumbprint) before jumping to the link?
I have no idea where to start with this. Google has turned up nothing.
When you click a link in the app, instead of taking you straight to safari, it instead asks for a passcode first. This would satisfy the parental controls issue.

Related

UITextView: Tapping a universal deep link that should lead to the SAME app, opens the fallback URL in Safari

I have a Branch.io universal deep link that displays a product page in my app, or the equivalent website page if the app is not installed.
When tapping the link from other apps such as WhatsApp or Notes, the link works. My app is launched and immediately displays the correct product.
However, if a user uses my own app's messaging platform to pass this link to another user as a text message, the message is displayed in my app using a UITextView, and tapping the link from this UITextView always launches the fallback URL in Safari.
Only when switching back from Safari to my app, the deep link handler is called and the link is then handled correctly.
I would like my app to handle its own deep links immediately even if they are tapped from within the app itself, without launching Safari. Does anyone knows how to achieve this behavior?
Deep links are an incredibly important part of delivering a high quality user experience. With deep links, you can take users to the exact thing they clicked on or even offer a customised on-boarding experience.
You can auto-route within app without launching safari browser, please follow this link for detailed implementation:
https://docs.branch.io/deep-linking/routing/#option-3-use-branchs-easy-config-deep-link-routing
Feel free to write to support#branch.io in case you have other doubts.

App rejected by Apple based on design guideline

Apple rejected our app with the following response:
We noticed an issue in your app that contributes to a lower quality user experience than Apple users expect:
- Upon launching the app, a web page in mobile Safari opens first, then returns to the app. The user should be able to use the app immediately upon launch.
Next Steps
To resolve this issue, please revise your app to address all instances of this type of issue.
The app we're developing is a keyboard extension. The use-cases do not require a user to actually open the app and use it. As a result, in the app itself (should you launch it from home/springboard), we redirect the user to our website, which informs the user how to use the product (there's no registration or immediate tutorial required, but we certainly cant have the app do absolutely nothing). From Apple's response, this clearly isn't the right way. My questions:
If a user were to be redirected to Messages, could this solve the problem? The reason I ask this instead of just trying it is so that I dont waste time and end up getting rejected again.
Part of the problem seems that opening the app through springboard is misleading since it doesnt do anything. But my understanding is that we cannot have apps without icons (Create iOS app without menu icon). Do keyboard apps need to be published differently so that we dont have an icon in springboard? If so, please direct me to some documentation/Xcode configuration/resources to achieve this.
This is my first attempt at mobile development
The answer provided by #particleman was the right one. Just loading a WebView within the app was enough for Apple to accept the app.

Branch.io how to migrate from universal links on primary domain

Currently we have universal links which look like http://example.com/sharing/< id >/ which open our iOS app through the safari smart banner. But smart banners sucks, so we'd like to use the Branch.io journeys banner, which actually appears when people load the page. Since these links are already in the wild, they need to continue to work have have some way into the app. In the future we'll generate branch.io sharing links from inside the app, but these landing pages on the web will continue to exist.
I'm calling branch.init('key_test_foo'); from javascript, and the Journeys banner appears. It only ever shows the "Get" button and never "Open". I'm not clear how I pass the object ID through branch.io so that the app can navigate to the right place.
The app is built in Xamarin, and I think I have the integration built correctly following the example. It is not in our production build through the app store, I'm just running the app through the debugger in Visual Studio.
I'd even settle for an "Open in App" link like imgur has, as long as there's something I can click in safari to open the app in the right place.
I don't feel like I should have to "make a link" every time this page gets viewed, right?
EDIT:
One additional question. I think I want to change my og:url so that when facebook scrapes my page, it will open through branch (instead of back to my site). But how would I set that? Facebook isn't going to run any JS when it loads the page is it? Can I just set it to my.app.link and magic will happen from the al:ios:url that drives the deeplink routing?
I think this: https://stackoverflow.com/a/34596340/401636 might be the solution.
1. The Journey's banner navigating to your app.
Branch uses the domain of the format -alternate.app.link domain for the link behind the Journeys button. To ensure that clicking on Journeys CTA, navigates to your app ensure that you have added the -alternate.app.link domain for your app in the 'Associated Domains' file. You can check the documentation providing information on how to add the domains here.
2. The Get v/s Open issue for the Journeys CTA
Branch uses a variable has_app to determine whether the device has the app or not. For this variable to be set to true, a user should click on the Journey CTA and be redirected to the app (not the App Store). Also, the issue of the CTA not updating is common during development, because the app is frequently re-installed on the device. Due to this testing, the flag, has_app, goes in a faulty state.
To force reset the has_app variable to change the Journey's banner CTA from 'Download' to 'Open', please follow these steps:
Click on the Download button - this should redirect to the Play or App Store
Install the app
Return to the web page with the Journeys banner, which should still display the Download button
Tap on the Download button again - the app should open
Close and then re-load the web page with the Journeys banner - the banner should now have an "Open" button
Tap on the "Open" button
Please note that the above steps are required only during development mode for testing purposes. Out in the wild in production, users will not see this issue. Also, it might take some time (as long as 30 minutes) for the flag to updated.
3. Navigating to the right place in your App
If you plan on using your old domain links for deeplinking, you can update your Link domain on the Branch dashboard to the domain your links are currently using. You can then recreate the links again with the Branch API. Please note, Branch will be the authoritative registrar for your domain and you cannot host anything on this domain.
If you do not wish to do that, you can append additional link parameters to your Journeys button. These link parameters will be available in your app when the user clicks on the Journey CTA and is redirected to the App Store/your app. You can refer to the documentation here for more information.
For both the above scenarios, in order to read the link parameters in your app, you should integrate the Branch SDK in your Xamarin app. (Reference documentation here)

iOS Universal Links sometimes stops working

My app supports universal linking and in most cases it works without any issues, tapping on a link opens the app like it should.
But sometimes, i'm not sure why, it stops working.
It happened a few times to one of the users, tapping on the link stopped opening the app and instead it opens the web.
And from that moment there is nothing you can do to make it work again.
I know that if you tap on the link in the top right corner on the status bar, it disables the universal linking and from that moment tapping on a link will open the web. and to re-anable universal linking you can tap the link on Notes App(for example) and tap the "Open in MyApp" button.
But this doesn't seems like the case, the user told me he is not pressing the link on the status bar, and even more weird, when trying to re enable the universal linking by tapping the link in Notes App, the "Open in MyApp" button is missing.
Any ideas what could cause this issue?
Based on my previous experience it could happen for various of reasons:
Most likely: apple-app-site-association is not available for user or is available with insecure connection. Here are possible origins of such problem, I am sure there are others as well:
User does not have internet or connection to your site/apple-app-site-association file on your site. Even though it should redirect to your app, Universal links feature needs to check existence of this file on site. It's done first time at app installation and each time you open your link (I checked on iOS10.3 with Charles). Note, that it does not wait the check to be completed and shows or does not show "Open in MyApp" button based on previous check. Even if user has internet on, your site could be blocked by firewall or something.
User has access to apple-app-site-association file, but he access it from a network or via a proxy that requires you to accept some certificate in order to decrypt your HTTPS access. Hence your HTTPS traffic became insecure. iOS checks that and fails validation of apple-app-site-association file.
User has access to apple-app-site-association file with good secure connection now, but previous access failed because of previous reasons -> user won't see your app opened this time or "Open in MyApp" button in context menu for reasons I described before. How to fix that? No idea, just try couple of times all the time.
You already declined that option, but just for future readers. If user taps on top right button with site name - all future transitions will redirect user to Safari instead of your app, until user tap this button again. Basically, iOS saves last user choice.
There are a lot of other reasons for that to not work, but in those cases there will be some 100% specific steps to reproduce, like does not work for certain /path or for debug/release candidates or for test server. It seems that is not your case so I won't cover it here.
Helpful links (quite a lot of repetition, but if you stuck, it's worth to repeat it):
App Search Programming Guide: Universal Links
Troubleshooting Universal Links
Sailthru's Universal Links: Troubleshooting and FAQ
The things I hate (and you should know) about Apple Universal Links
To me it happens the association file is sometimes not downloaded upon the app's installation even when the device can access the file from Safari.

Universal Links opened in unsupported apps, are they completely lost?

I am trying to implement Branch marketing links in my app. I want for example to be able to create a link to share with users that will route them to a particular screen in the app. I noticed from the Branch docs that for some apps the link just opens the app store and not the actual app (even if it is installed). Being based in Asia I have the feeling that most of our customers will be wanting to share the link via an unsupported app such as Line. If a user is redirected to the app store via the link and then taps “open app”, what happens? Is the link meta data lost? Does the meta data only remain if the link is opened in an app such as mail or notes?
Alex from Branch.io here:
This list in the Branch documentation gives a partial list of apps that support Universal Links, but unfortunately it is not complete. We've tried to cover the most common apps.
Line is using a custom webview (not SFSafariViewController). It doesn't support Universal Links for the initial click, but this is one of the edge cases where Branch can detect the originating app and do some custom behavior. For Line, we trigger your app's URI scheme. This means the behavior your users see when clicking a Branch link from within Line is the same as Universal Links, even though Universal Links isn't actually the protocol being used.
If you want to handle other apps where Branch doesn't have a workaround like this, you could try enabling the deepviews feature. This will cause the link to open a content preview with a button to launch the app (or forward to the App Store if not installed).
When a user with the app already installed clicks the Open button on the App Store page, all the meta data is preserved and they will still be deep linked. Branch doesn't know (or care!) what happens between when the user clicks the link and the app launches, so that gives you plenty of flexibility.
Universal Links have some restrictions - not from Branch but from Apple's implementation. One of these restrictions is Universal Links cannot be opened from SFSafariViewController.
From Branch's docs, Line is not explicitly mentioned but other popular messaging apps may be of interest. I don't have Line myself but whether Line launches websites in it's own browser or the Safari app may give you a clue.
Facebook Messenger - works conditionally
WeChat - works conditionally
Twitter - works conditionally
LinkedIn - works conditionally
Any app using SFSafariViewController - works conditionally

Resources