Is there any provision in iOS wherein the referral parameters used to start the iTunes application are passed on to the application on its first run?
For example in Android, if I use a link such as http://market.an......com.company.pany&referrer=heythere to download an app on Android and actually install the app, the Market app passes the "referrer" parameter and its value to the app on its first run, which the app can use to any extent.
Is there a similar provision in iOS?
We also struggled with this when we built our last mobile app, Kindred Photobooks. The best way we found is to basically bundle that information in the link and use fingerprinting to make that data available after install, which is working really well.
You can try to build fingerprinting in in house. Basically the steps would be the following:
1. When a link gets created, appending parameters to the link, or create a link reference in some backend database if you want shortened links
2. When a user clicks on that link, collect a fingerprint of their device from everything you can read in the browser (for example: IP, OS, screen size, etc) and redirect that user to the app store.
3. When the app opens, create a similar fingerprint from the same parameters collected in app, and match it up in your database to the outstanding fingerprint.
4. If there is a match, you can return those link parameters to the app through install.
Alternatively, if you don't want to build all that infrastructure and handle the many edge cases, we bundled it up into a free service called Branch. Check it out at http://branch.io
No, there is no such thing on iOS. But you can and should file a feature request at bugreport.apple.com, if you really need this feature.
As of iOS6, if someone installs your applications via a smart banner, you can pass a url to your app on startup. You do this by using the app-argument parameter:
A URL that provides context to your native app. If you include this, and the user has your app installed, she can jump from your website to the corresponding position in your iOS app. Typically, it is beneficial to retain navigational context because:
It should work on install:
When the app finishes downloading [after clicking install on an app banner], the View button changes to an Open button, and tapping the banner will open the app while preserving the user’s context from your website.
More here: http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/PromotingAppswithAppBanners/PromotingAppswithAppBanners.html
I think this will work (but the jury is still out: Does app-argument on Apple Smart Banner get passed to app on install? ), but testing this is tough: How to test Smart App Banner Urls on in Dev environment
No, AppStore doesn't pass any parameters to application - it just unzips ipa to application folder (container).
Related
Is it possible to create an app that does not appear in the Home screen, and allows another app to grab its resources (sounds, images, etc)?
I want to create a lightweight app (app #1) and upload it to the app store. Then I would like to be able to direct users to download an add-on (app #2) if they want that contains more images and sounds. Then app #1 would read these resources from app #2.
I'm trying to avoid having my own server to serve these images, and just have the App Store handle this for me. I know I can do this on Android, and was wondering if it's possible in iOS as well.
Is it possible to create an app that does not appear in the Home
screen, and allows another app to grab its resources (sounds, images,
etc)?
Not only can you not create an app that's hidden from the user, you also can't access the resources of one app from another. Each app lives in its own sandbox and cannot read (or write) into the sandbox of another app.
I want to create a lightweight app (app #1) and upload it to the app
store. Then I would like to be able to direct users to download an
add-on (app #2) if they want that contains more images and sounds.
Then app #1 would read these resources from app #2.
The normal way to do something like that would be to host the resources you need on a server or just store them inside your app.
I'm trying to avoid having my own server to serve these images, and
just have the App Store handle this for me. I know I can do this on
Android, and was wondering if it's possible in iOS as well.
No, not possible.
If you are able to use the In-App Purchase system, then Apple will host this for you. From the docs, I'm not clear if this is iOS 6 only or is available for older versions (I haven't seen any reason it wouldn't work for older versions, but I haven't tried it).
Note that most iOS 6 specifics are under NDA, so please do not discuss them here until iOS 6 releases. This particular fact is public, however:
https://developer.apple.com/technologies/ios6/
https://developer.apple.com/appstore/in-app-purchase/index.html
https://itunesconnect.apple.com/docs/iTunesConnect_DeveloperGuide.pdf
No it's not possible. You have to setup an icon and it will be displayed on the iPhone springboard.
No it cannot, why do you need one?
Sadly No in IOS but in android this is possible.
There can exist an app without an icon. But it can still be managed or removed in "Manage Application" under settings.
This is required in scenarios, like say I want this app to alert user when he is going out of region, using GPS in the background. I do not want any icon nor any user interface.
We need to be able to easily install our in-house apps on our devices and quickly update them no matter where they are.
I'm looking into different ways of distributing our in-house app to our staff. So far I've found iTunes, iPhone Configuration Utility, install via a web link, etc...
Our devices will more than likely not be in proximity to our office and mostly rely on 3G, so it seems that the web link is my best free option.
I made a web-app that I can add to the home screen to install / update the application. What I want to do is make the web-app more intelligent: Display an "Install" button or an "Update" button. Ideally I want the web-app to know what version of the app is already installed.
The only way I can think of doing this: When the user clicks the install link store the version number in localStorage. When they return later compare that to what's available and display the right button.
The biggest issue with this "solution" is, what if the user clears Safari's cache? Do home screen apps have their own protected cache?
Another option is have the app itself relay its version number to the server and store that in a database. But this is more complicated, so I would like to avoid that. If I could use a url scheme to get the version number without launching the app, that would be acceptable. But I don't think it's possible.
So given that we need to readily update the app quickly on the device no matter where our staff travel, what is the easiest, best, and preferably free solution?
It's really simple... the app can update itself by opening a weblink... you don't have to open it in safari. So on app start just check the version from the web server and when it's not up to date it can update itself.
You could also send a remote notification if it's urgent.
This link shows a video where an app upgrade is "forced" from within the app itself:
http://buzzworks.de/blog/update-ios-beta-apps-from-within-the-app
The App Store is not called in and it's said to work only for AdHoc
apps.
Anyone knows how is this possible?
edit: please give a look to the video before answering. AdHoc apps are signed by the developer and they do not come from the App Store. This sort of forced update is useful when doing beta testing and in enterprise applications.
I've found that it's all explained here:
http://developer.apple.com/iphone/library/featuredarticles/FA_Wireless_Enterprise_App_Distribution/Introduction/Introduction.html
The developer should create an .ipa with the app and a manifest in plist format with the URL to the .ipa and a few other things.
The app can optionally implement its own way to find if an update is available and open
the URL to the manifest.
I didn't it's really possible because the app has to somehow sign itself. The best I can think of right now is that the app is not signed?
You can always force people to go to the app store when a new version is out. Simply make the app connect to a webservice first. Other solutions are not accepted by Apple, or will quite simply not work because of other issues (signing is one of many).
You could also design your app in such a way that forced updates are never a requirement. You can load your user interfaces from the web (Apple has presented some valuable information about that during the previous WWDC), your data can come from the web, and if there is any other correction to do just ensure your app is backwards compatible.
That's how the app store works. And it never requires a 'forced update' ... Well, almost never ;-)
I would like to be able to pull the list of apps and games the user has and present it to them, or launch one of them. I'm guessing that Apple doesn't provide this capability in the iphone sdk. Still, I'd like to know how to do it and still be eligible for the app store.
You are correct Apple does not provide this in the iPhone SDK, therefore you cannot do this and get your app into the app store.
If the application has a published URL spec (i.e. Google Maps, Mail, ...) then you can launch the applicaiton via the URL launching spec.
But if the given game / application doesn't support the URL launching spec, then you have no way to launch it from your application. I also believe you cannot determine if an app is installed via the URL spec, only launch the application.
Check out the "URL types" reference for Info.PLIST.
It seems like Info.plist file has an ability to declare different roles for the same application bundle through the UIRoleInfo key. SpringBoard can recognize these roles after installing an app and may display separate icons for each application role.
For instance, iPhone shows MobileSlideShow.app as 2 different programs: Photos and Camera.
Unfortunately, there is no official Apple documentation about the subject at the moment. Would anybody advise how to organize the same behavior in a custom app?
This feature is going to be used in the Enterprise product for ad hoc distribution.
This isn't a supported feature, so if you do this you might have a hard time getting your app through the approval process. I wouldn't recommend using it.
Have you tried it to see if it works? If it doesn't work, you could create a second app that does nothing but launch the first one, with a custom URL scheme. The first app can recognize when it is being launched with that URL. This is not ideal as you will see the second app launch & quit (though it should be really fast).