Determine which app store my application was downloaded from? - iphone

is it possible to determine the specific country app store my application was downloaded from? I would like to distinguish if a user downloaded my application from the us app store vs. the canada app store?
Not interested in locale settings but the actual store the app came from.

I don't think so, because I don't think it matters on device.
iTunes Connect tells you when a user "upgrades", but I think this is per iTunes account, not per device. Presumably the iTunes Store keeps track of this.
The device keeps track of which account an app is from (it prompts you for the correct account password if you have apps from multiple accounts).
The device keeps track of a store country (so it knows which one to connect to).
I don't think it keeps track of the store that an account is on (you can be logged in with a US account but be connected to the UK store).
The closest is the current iTunes store country (which might have changed since the user installed the app, or the app could've been installed by syncing with iTunes), but I don't think this is in an accessible file.

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.

iOS - is the user able to restore apps that were removed from the store

Suppose the following situation:
A user buys an app
this app is removed from the store temporarily, by changing the availability date to a year in the future. Note that the app was not deleted from the store, it is just hidden by a change on the availability date.
the user deletes the app
the user regrets deleting and wants to restore the app from icloud.
will the user be able to do that? and what about apps that were completely deleted from the store?
thanks.
The other answer is incorrect. Unless you indicate in iTunes Connect that the app was removed for legal reasons (Rights and Pricing section) the user will still be able to re-download the app from iCloud.
If the app is not displayed in the app store(developer hide or remove), user can not re-install it after deleting, until developer make it displayed in app store again.
if developer deleted the app completely from app store , that means the app is not displayed int the app store, user can not re-install it yet, but the developer can re-upload the app again using the same app-id.
Can or not can re-install app depends on whether the app is displayed in app store
Also depends on whether it is the same app-id

Paid app to Free app with Inapp purchase

I have my paid app in appstore now I am converting it to a free app with inapp purchase. and i want to give the data free for the user's who purchased my Version 1.0. At this point I am facing a problem. If the user buys my paid app and if he deletes the app after sometime before I release my update what should I do in this case I want to give the data for free for the user's who deleted the app also. I have two questions here
1) Will my app gets approved even If I don't give the data for free for the users who deleted the application and doesn't have any backup of my app ?
2) If it is possible to give the data for free for the user's who deleted the app please tell me the way how to do it?
You can not do anything if the user delete the app from device and install your latest in app purchase version. If your application is interacting with your server and storing information about the user who purchased the app, means it depend of your app functionality. If your app is social networking app any login/ registration is there inside your app and that registration of user you are storing on your server then you can allow free access of your app based on the registration mail id of that user.
Secondly, if you have any database sqllite inside your application then you can allow free access of your users based on that database.What you can do is on your latest release change the name of hat database and when your application start then you can check if previously database exist already if yes that means that is old user and you can allow that user free access of your content.Plese note that if user delete the app before installing your latest version then in that case we can not do anything and another a case is that
if user install his app on another iPad then in that case also we can not do anything. Now answer to your questions:- 1. yes your app gets approved by apple whether or not you are giving content free to old user apple did not care of that. 2. we can not do anything if user delete the app before installing your latest version of app until and unless your app has some interaction with your server.Let me know if you have any other questions

How to identify iPhone/iPad user's itunes account information?

I am working on a sync solution for my app, and I would like to be able to find out if the user who has just downloaded my app would like to sync the app's data with the same app but hosted on another device (e.g., installed on both an iPhone and an iPad), so I can prompt the user to set up syncing. Is there a way to either (a) get the user's iTunes account information (the email address or some other unique identifier), or (b) identify if the user's iTunes account has already installed the app on another device?
Theres absolutely no way to get user's iTunes account information; that would be a security issue. The devices themselves have a Unique Device ID which can be obtained using:
[[UIDevice currentDevice] uniqueidentifier];
If you implement UrbanAirships AirMail /Push feature, if the user opts to receive push messages from your app, you can view how many users are opt'd in, and if you set the device name property, but thats about it.
Also, to sync data between multiple devices and such, I would suggest Dropbox.

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.