Is it possible to prevent an iOS app from being placed on the home screen? - ios

I am developing an iOS app using Xamarin.iOS that should only be triggered by tapping on a URL. Because of this, I would like to prevent the app icon from being placed on the home screen. The reason is, the app will not function properly if they open it from the home screen (it needs some of the data in the URL to load properly). I would prefer to prevent the app from being on the home screen instead of checking whether a link was tapped or not. I know that is possible to do this in Android using the manifest, is this also possible in iOS?

This is not possible whatsoever; the developer has no control as to the placement and visibility of the application, and as such will always be visible on the springboard/home screen.
The best option you have is to show information to the user that explains why opening it from the home screen will not work, if they launch it that way. Most likely though, this will be rejected from the App Store as having no useful purpose. The guidelines are found here (App Store Guidelines), and I think this is what may cause a rejection (emphasis mine):
If your app is not particularly useful, unique, or “app-like,” it doesn’t belong on the App Store.

I'm not finding the documentation I was looking for, but, as far as I know, this is not possible in iOS.
You could maybe have a default url that the app launches with and then use deep linking to launch the app with a custom urls. There are lots of great tutorials on deep linking (launching your app through a url) like
This one or maybe this one

Related

How to get the iOS Camera suggest my app when snapping a QR code

I want the Camera App that comes with an iPhone to recommend a QR code be opened up in my app. My first question is, if two or more apps register the same universal link, which app gets suggested.
For instance I removed one app that kept on being recommended. Then suddenly another app starts getting recommended. How does a user or developer control this.
Have a look at Apple's guide for implementing Universal Links. In short, your website must upload a JSON file at a specific location that tells iOS which apps can be associated with the website domain. Here is an example file used by the NBC app.

Is there a way to check universal link registration from Safari?

iOS has a universal link capability (https://developer.apple.com/library/archive/documentation/General/Conceptual/AppSearch/UniversalLinks.html).
However, it looks like there are couple of ways to "disassociate" a link from the application:
Press and hold on a link and choose "Open in Safari"
There was a tiny link in the top right corner of the app, which was shown right after opening universal link (it looks like it's gone in iOS 11).
As soon as you did one of these actions then universal link will be opened in Safari (until you reassociate it back to the app).
The issue is that if a user end up in this state, it's not clear what he/she should do. I want to provide an explanation on the web page which will be opened in Safari.
However, I want to distinguish two cases:
A link is clicked on a device without the app: Tell a user to download the app
A link is clicked on a device where the app is installed and it's disassociated. Tell a user how to associate it back.
Is there a way to check whether universal link is registered from a page opened in Safari?
Yes, you are correct that iOS 11 took away the upper-right hand corner button to re-enable universal links. They have kept the banner that shows up when you scroll the page up slightly.
This banner acts will also re-enable Universal Links for the user.
Unfortunately, there is no perfect solution to determining if a user has the app installed, but there are a few ways to attempt to deduce whether the user has the app installed already. Branch has ways of deducing whether the user has the app installed and attempting to open it with a URI scheme. You can read about the $uri_redirect_mode in the docs.
It would be very difficult to build this deducing method on your own and I'm not entirely sure how it's done, so I recommend using Branch's solution.

Implement deeplinking to bring user to install an iOS app and after install take them into the app

I want to implement deeplinking whereby a user that does not have my app will be brought to the store to install the app, and after install they are taken into a specific part in the app?
The second part is not clear to me - how will user be brought into a specific part of the app after installing and launching it? Does iOS retains the link info?
The simple answer to you question is yes you can do those things but no you cannot do them in the way you want. You would not be able to launch to the app store and then once the app is downloaded launch into a specific place in the app. This is mostly due to security.
So let me explain, there is a method that you can call UIApplication.sharedApplication()canOpenURL(url) which will return a Bool on wither or not you app can open a url. If it comes back as false then you can assume the app does not exist on the device and you can call UIApplication.sharedApplication().openURL(url) where your url = NSURL( https://appsto./Path/to/your/app) then "The User" will have to click the download button.
Then if they try the action again you can callUIApplication.sharedApplication().openURL(url)withurl = (yourapp://).This will launch your application.
Now for launching to a specific place in you app you will need to setup schemes for your app. There is a decent tutorial on doing that here http://www.brianjcoleman.com/tutorial-deep-linking-in-swift/ and also a short synopsis of what you can do found in another answer to deep linking here Confused with IOS Deep linking
So you can get most of the way there but with Sandboxing you will not be able to launch the store, download the app and launch the app all in one move.
Hope this helps, cheers.

Change app icon without update

Is it possible to change an app logo (on the home screen) without updating the app?
This is from the view of an iOS developer. I got the idea from seeing how the New Yorker newspaper can change their app image without updating the app. Can I do this for a normal app? Is this solely for newstand apps?
Sadly, this is only available to Newsstand apps.
You're correct in that this is solely a newsstand feature for the reason being that content within those applications will change regularly (without requiring a change in the architecture of the application) and provides another way to notify or entice the user to open it again.

Automatically check for iPad app when downloading specific file type from website?

I think I already know the answer to this ("can't be done"), but I figured I'd see what people think...
On my client's website they're posting files for download that specifically need to be viewed on iPads using the Cadwork Viewer app:
https://itunes.apple.com/us/app/cadwork-viewer/id505161598?mt=8
You can't open the file on an iPad unless you have that app, and I'm wondering if when clicking on the file to initiate download if there's a way to scan the device to see if Cadwork Viewer is already installed. If so, proceed with the download of the file. If not, pop up a notice "This file requires the Cadwork Viewer app, download it here from iTunes." Something like that.
Again, I think this is just not doable, but hey...there's all sorts of things I don't know!
Thoughts?
Check out this link: https://developer.apple.com/library/ios/documentation/AppleApplications/Reference/SafariWebContent/PromotingAppswithAppBanners/PromotingAppswithAppBanners.html
You can add a banner to the mobile site that lets you open the app from Safari.
Explanation from Apple:
If the app is already installed on a user's device, the banner
intelligently changes its action, and tapping the banner will simply
open the app. If the user doesn’t have your app on his device, tapping
on the banner will take him to the app’s entry in the App Store.
This should be a good starting place.

Resources