ios6 device identification and profiling - iphone

I have made a social application, since I don't like apps that asks to create a profile...remember passwords...etc, my app works without login needed.
In order to identify an user, I use the UDID. In iOS6, Apple doesn't provide no more access to UDID, but forces developer to use the identifierForVendor, the problem is that this identifier changes if the application is deleted and installed again...or if the application is upgraded.
What are your suggestions to save users profiles?
Is there other ways to have a kind of "login" without an account?
Thank you very much.

Related

Paid App : need to uniquely ID the user

I am designing a paying app that will require users to create their own profile.
This app will of course be downloadable on each of the devices the user has.
This is the precise scenario I want to bypass :
the user downloads the App on an iPhone
he creates an account and start using the app that makes server
calls
he downloads the app on his iPad and with his login & password
retreives the data on the server, so far so good
Now, he lends his iPad to a friend (who didn't pay for the app).
The friend wants to use the App, and wants to create his own
account. Yet, I want to forbide this since he didn't pay for the
App.
So my problem is : I want to restrict the use of the app only to the user that paid for the App, not for his friend.
Of course, I cannot use the AppleID since there is no way to reach it from code.
I thought one moment that I could use iCloud like mentioned here but since the ( iOS unique user identifier )user can choose not to use iCloud, my problem is not solved ...
Is there an easy solution that I missed to solve that issue?
You friend will be using different apple id. You could use Restoring Transactions api of apple to get understand whether the user has purchased the app or not. This is possible for non-consumable in app purchase. Please do check the below link :
https://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/StoreKitGuide/MakingaPurchase/MakingaPurchase.html#//apple_ref/doc/uid/TP40008267-CH3-SW1

how to know app was priviously install on ios device?

There is any way for identify that user is installing my app again? Actually in my app i have a feature user can translate some word for free but after that he have to pay. I am using in app purchase for same. But what if user delete app and install again ? he will be able to translate again for free.How to know app was previously install on that device?
Application goes to the App Store for in app purchases. If user has already bought that item, it returns true to your request. User won't pay it again each time.
Some implementations of in app purchases use the keychain to record purchase flags or freebie flags as you mention.
This blog entry will show you how to store and retrieve something from the keychain.
This approach really doesn't to my mind sit well with the principal of sandboxing an application so I expect it's frowned upon by Apple and by purists but if you search SO then you will find other posts relating to in app purchases and using the keychain.
See this answer as it seems to be pretty definitive on the subject.

Getting the user's information on iOS

I am developing an iPhone App using Xcode 4.2 .
is there is a way to gather the user's information (name , phone number ,e-mail etc...) upon download from the App store ? if yes , how ?
No, you can't legally gather user's name, phone number, etc.
That would be a privacy violation, and Apple doesn't allow developers to do such things.
NO.. not with official iOS sdk.. Apple will not allow your app in app store if you do so!
You can have the app politely request the user to enter some info about themselves; but according Apple's approval guidelines, can't require that they actually do enter any identifying info.
In addition, Apple provides no identifying info to the developer, and likely can't according to their iTunes privacy policy.
That's what iOS is all about - apps running in a sandbox to keep the user safe and only sharing data with user interaction. You can only get user data by using the AddressBook.framework, which the user has to engage with to allow your app to access that information.
If you're looking for an easy way to get user data, switch to Android. ;)

How to identify user across devices on iOS?

I am working on an app where user will be buying some "credits" as in-app purchases and use them to buy some services inside the app. As user can has more then one device I need to identify him across different devices.
I understand I can create some logging (and store user accounts on my own server) but I would like to avoid this. In best case I would like to use Apple ID but I can't figure out how can I access Apple ID inside an app?
I found similar questions here but no satisfying answer. I do not believe there is no chance to access Apple ID from the app (I don't need password, just the id) as I found something like AVMetadataiTunesMetadataKeyAppleID in AVFoundation but this framework seems to be only for Mac OS X.
Any suggestion how to solve this?
Sorry. There's no way to do it without implementing your own authentication system on your own server. UDIDs are unique to each device and Apple does not give access to the iTunes user account whatsoever.
Other way is you can use facebook authentication in order to achieve that. Just connect you app with facebook api and u can keep their login address with some additional info.
Furthermore, it might be useful for your app if they can share your app with their facebook friends :p
You can identify user with help of GameKit.

Unique identifier for an iPhone app, NOT device

I want to avoid user registration in my app, and to identity my user by purchased app.
If someone purchase app on his iPhone, and with the same Apple ID download this app on other device, I want to use the same settings and content on this devices.
Is posible to use identifiers like AppleID (without entering in input field by user)?
I found similar question but UniqueIdentifier is unique only for physical device, not for user.
No. Apple does not give an app access to the user's Apple ID without the user's involvement. And for good reason.
I don't think you should outsmart the user. You can't assert that the user will want the same settings on another device. For instance I manage all my family iphones and download apps for them, all of them have their own accounts in apps and like different preferences. That's why it's the best to allow users to create accounts and sing in. This way user has a clear understanding what he/she is doing.