Prefill user data just after download and first launch iPhone app - iphone

User downloads my iPhone app from the appStore link I provide from invite email. Is it possible to persist/cache the user-data say email Address and pre-fill when the app launched.
Thank you.

You can get all the data that Apple allows you to get, which is absolutely none - you can't get the user's email, you can't get his phone number, you can't get his UDID. No way to identify him. If you want anything from the user, he needs to enter it manually. If you think about it - it's actually a good thing. All your iphone information is completely secure and protected.

No, this can't be done. Your special link might take the user to the app store, but then that's it. The act of installing the app has nothing to do with your link anymore and no data can be passed to the freshly installed app.
Of course once the app is installed, if the user taps on a special link you provide, it could force your app to run and provide data to it.
Maybe you could provide a QR code the use can scan with your app the first time they run it. The QR code can contain the data you want. Of course the user may choose to not scan the code. Then again, the user can install your app without using your link to begin with.

Related

Persistent device identifier even after app gets uninstalled

In my iPhone/iPad app's use case, there is a voting system and one device can send its vote once to the server. Therefore my server needs to identify user's device. I don't want the user to register an account because that makes the app complicate. However, I couldn't find a solution that works.
UDID is deprecated
I presume getting MAC address will get your app rejected by the app review process
I tried creating my own UUID using [[NSUUID UUID] UUIDString] and then storing it using NSUserDefaults, but the settings disappear if the user uninstalls the app
identifierForVendor is also reset when the user uninstalls the app
I considered advertisingIdentifier but because I'm not using it for advertisement, I presume it will also be rejected by the app review process
I'm not asking for a bulletproof solution in every situation. Just a solution that works even if the user uninstalls the app. Because I can generate my own UUID, I guess my question boils down to: How I can save data for the app that survives app uninstallation?
However if any of you have other approach, please feel free to inform me. Thanks.
Save the UUID into the keychain.

How I verify that user installed an iPhone app?

We provide advertising capabilities to iPhone app customers, where they can advertise apps to millions of users on social network, and stand out among large number of apps in app store.
Now, to prove the ROI, we also want to provide statistics of how many users actually installed the app using our advertisements on social network.
My question is:
How do I verify whether user installed an app (when user clicks on advertisement and we take user to App Store (on mobile device) or itunes page (on PC/Mac) )
Is there a way to integrate with developer's interface to get this information?
Thanks in advance.
This is a broad question and there are some simple solutions which may require some work. Apple provides you no feedback for when an app is installed. Assuming you are storing the click of the ad on a server you will need to match to that click with something you send up when the app is opened for the first time.
(if the ad is shown in a native app on the phone) You can send up a unique key when the click happens and also send that same unique key when the app opens for the first time and match them on the server. This key can be a hashed mac address or something you save to the UIPasteboard. This requires integration on the side of your clients app because they will need to send a http request to you when the app launches.
If the social network is web based then your best bet is to match on IP address which isn't perfect but can give you a high percentage of accuracy.
I guess I'm assuming you are hosting the ads though. If you are not then you will have to rely on what the ad networks give you and many of them can provide some form of install tracking.
Well, you can always look at that persons phone and check if your app is present there :P
Just kidding.
You have some ways to get information such as these.
If you have registration in your app, you can monitor the userInfo, along with the UDID.
You can setup some webservice calls on applicationDidFinishLaunching for the first time events (using NSUserDefaults key to save the first time info) and use that.
Check out FLURRY for data analytics in your app. This is an awesome service, and allows you to track your users and how they interact with your app. I would recommend this !
Most ad networks have conversion tracking capabilities, but once you click an ad from the web and go to iTunes, all hope is lost tracking a conversion.
I guess you'd be able to track a conversion if you require the user to provide information (like an email address) before directing them to the appstore then requiring them to input that same email once the app is opened.

How to change appstore application icon

Hi can any one suggest me it is possible or not and if possible then how?
The premise is that the user pays for the app via a website and they gets an access code to send to her guests via the website. The user downloads the free app from the iPhone store and enters the code. We're trying to figure out if we can enable each user to customize the app icon so it can appear with a different image or text on the user phone.
You can't. The application's icon (and the application's property list file) is in the application bundle, which cannot be modified.
This would also violate the iOS SDK Terms of Use and the iTunes Store Terms of Service; you cannot have a third-party receive payment to access a free iOS application.
You can customize the iOS icon of a web app clipping, and put the web site to be clipped behind your private paywall. Apple has been reported in the past to accept App store apps that generate URLs to customized clippable web apps. No idea if they currently or will continue to do so.
Icons on App store iOS apps for stock OS devices can only be changed by Apple approving an update.
Evan is right... This goes against so many terms of the iOS SDK.
One thing you could do (but I can't guarantee it will be accepted by Apple) is create a registration system on your website. Then have a login on the App as soon as it loads and check that the user has a valid account which has paid the subscription. You would have to handle all of your payment stuff on the webside though, meaning the app would be useless unless the user has already sorted that out. If you do this, on submission of your app make sure you provide Apple with a demo account username and password!
As for the icon, you can't change it once the App is submitted. It is bundled in with your app binary and there is also a logo included in iTunes connect. You can change them, but only by submitting a new binary.

Is It Possible To Add A "Rate This App" Link To My App?

Here's what I'm trying to do: I have a button on the settings page in my app - I want this to direct users to the review/rate page on the app store.
I know this is possible using [[UIApplication sharedApplication] openURL: .... ]; but my app is unreleased as of yet, so I don't have a URL to use.
Is it possible to implement this functionality for an unreleased app, or would I have to wait and include it as an update?
Thanks :)
The URL below is what you're looking for.
Just replace the 368754825 after id= with your app's Apple ID from iTunes Connect. This will take you right to the review page and won't have all the redirects like a normal link. Your App's Apple ID will not change between now and when it's on the store.
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=368754825&pageNumber=0&sortOrdering=1&type=Purple+Software&mt=8
Update:
I tested the link I posted more than a year ago. It still works. The idea is that it won't work until your app is live. I know there's some concern about putting this link in and shipping before actually verifying it works, but it's the best option for having a review link in a 1.0. You can alternatively submit a 1.0.1 update (with link) right after 1.0 (without link) is approved which means you're only missing out on about a week's worth of reviews.
This is newest format for creating review form links on iOS (only works for iOS devices) [tested on 4.2]
itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=412843648
Replace the final string of 9 numbers with your app's application ID from iTunes connect or your iTunes url. This link when launched from an iOS device takes you directly to the reviews
Yes you can add a link.
What I did for one of my apps that wasnt released yet was point to a certain URL, like: http://www.wrightscs.com/ios/myapp/review.html which just contained an http redirect.
Once my app was released and I had the iTunes Store link, I just updated the review.html page with my apps URL.
So now my app opens the review.html link, but in return gets redirected to my app in the app store.
First of all you have all the data about your app when creating it on iTunes connect. The thing you need here is the "Apple ID" (you can find it on iTunes connect under the app information).
After taken this number you can use it inside your app (even hard-coded) asking users to rate it or any other thing you want to do with it.
You can use this code for doing so, This method would open the rate page for your app on the App Store without opening safari on the way like other methods here (I've put all code which seems easier to understand sometimes):
static NSString *const iOSAppStoreURLFormat=#"itms-apps://ax.itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=%u";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:[NSString stringWithFormat:iOSAppStoreURLFormat, (unsigned int)YOUR_applicationID]]];
Where YOUR_applicationID is the one you took from the app store (Apple ID).
I suggest you test that with a working app (active on the app store, even not your, You can use this one for example: 474785950) and change it afterwards. Pay attention to download the app you are rating to your device/account (You can always know the Apple ID of working apps from the link itself : http://itunes.apple.com/us/app/i-ruler/id474785950?ls=1&mt=8 it's the number just after the "id").
Moreover, For this topic I have some other things that should be considered:
1. Apple can reject your app if you are asking users to rate your app with 5 stars, Many developers does that and don't get rejected but I've been rejected couple of times just for that. Beware!
2. Asking users for just a rating mostly doesn't have a good effect, Great feedback comes only after the user used the app and really enjoyed that (users are really used to popups asking them to rate and just skip it). Also if user want to skip this process for now you want to try asking him later, And most importantly you want to ask the user to rate your app after an update (that is super important because rating is for each version!). To solve this case I suggest using iRate (or build something custom using that as starting point) which is very easy to integrate and it can ask for rating only after several days/opening times etc. and remembers to do that for each version. Can download it from: https://github.com/nicklockwood/iRate/tree/master/iRate
I think that the direct link to 'write the review' is undocumented. It is better to give link to the app and it will be up to user to write the review.
You can get the link to your app from your account in iTunes Connect.
You will get the link once you add a new application (not necessarily upload and make it live). That link will open your app regardless of the platform (iPhone, Mac, PC).
That link will not work un till the app is live.
This method worked for me!
Swift 2 version this code works for iOS 9:
let appId = "12345678"
let url = "itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=\(appId)"
UIApplication.sharedApplication().openURL(NSURL(string: url)!)

Is it possible to get the user's apple ID through the SDK?

is it possible to get the user's information, such as apple ID, through the sdk? I am writing an app which will require an account linked to the app user. I want to allow the user to have one account across multiple devices, so using the device ID is not possible. The easiest way to do this, I am thinking, is to use the app user's apple ID as this account's ID, so not requiring them to create yet another account.
No, it's a privacy issue, just like their phone number.
They'd still have to create an account on your site since you don't have access to Apple's databases, and no one will be willing to give you their iTunes passwords for obvious reasons.
All you're really saving is them entering a user name, since they'd still have to give you a password. It's very easy to remember this data for future runs of your application. Look into using NSUserDefaults. I would recommend against using the UDID and give the user the option to save their password. That way if the phone is lost, whoever finds it doesn't have automatic access to the owner's account. If the user opts for automatic login, you can easily save the password and send it along with the username when the app loads.
It's not (AFAIK) possible. You can only retrieve the device's UDID.
What I've done in the past is link an account on my side with multiple UDIDs on the user's side, so when they install the app on various devices they can just use that single account and it will automatically link that device. Not ideal, but I've not seen a better solution.
If it is a game, you can use the Game Center Account to identify an user
Instead of the UDID for the device, you might try the [UIDevice currentDevice].identifierForVendor It is linked to the device and the app installation.
I am storing the username and encrypted password in a file that is stored in the user's application file space. When the app starts up, if it finds this file, it attempts a login without asking the user. Having a password, even encrypted, stored in the file system does seem insecure, but the application is not one where people are apt to try and steal passwords.