tvOS unique device identifier - swift

I'm developing now an app for Apple TV. It is a client-server app. On registration, users get a free trial period. My goal is to avoid situations when user will just register new account or reinstall the app and get the trial period again. I need to identify if trial was already activated for each concrete device. So I would like to know if there is a legal or semi-legal way to identify each device? I will appreciate any ideas!

You can store some value in the Keychain (read more about it
here) and check if this value was previously stored in the Keychain. If so, it means that user installed your application before.

You can use identifierForVendor (documentation) but that changes once the app is uninstalled.
The value in this property remains the same while the app (or another app from the same vendor) is installed on the iOS device. The value changes when the user deletes all of that vendor’s apps from the device and subsequently reinstalls one or more of them.
Perhaps you could couple that with a user's email address to prevent creating new accounts. Not foolproof, but certainly makes it more difficult for the user to get around it. They would need to uninstall the app and use a different email address to circumvent you.

Related

Register each unique iOS device?

I wish to create a User system based on each unique iOS device. This way, user don't have to register for my service and they can't delete and reinstall my app to become a "new user" again.
I wanted to use the UIDevice uniqueIdentifier but Apple has deprecated and asked us to use identifierForVendor. The problem with identifierForVendor is that if a user uninstalls my app and reinstalls it, they are view as a "new user" since the identifier changes.
OpenUDID & SecureUDID is also deprecated. Please help me solve this issue. Thank you.
You got it:
Apple has deprecated and asked us to use identifierForVendor
Apple did that to prevent you from tracking down users. Some time ago you were able to ask the system for its MAC address to get a kind of identifier but Apple also changed that API: Now all devices return the same MAC address when being asked.
So short answer: There is no way left for us to get an ID that is really unique and immutable, sorry. The only way to somehow track user's is by vendor ID, as you said, or by letting them register their eMail address. Even though they could change that information when reinstalling the app.

Using company iOS Developer for private iPhone

I have an access to a comapny iOS Developer program and I was given an iPhone 4 for testing app. I wonder if it is possible to add//assign my private iPhone to the same account without letting admin know about that?
Probably not.
If you add a device, whenever the Admin will check the account, he will probably notice another device has been added. I am not fully sure how it works with the company accounts, but I think the only difference will be that you Device ID would pop up under the "registered devices" section, not your name.
BUT
If you shouldn't do it, don't. If it doesn't matter if you do add your device, then just tell your Admin. But the company account can only provision to so many devices, so if those spots for devices are needed, then you could find yourself in a bit of trouble if you used one up for your personal iphone.
IMO, be a good boy. Do whats right (not saying your doing something wrong though).
No, every single device registered will be listed under devices, in the developer center account, you can wait for iOS 7 it will be free to update, so be patient.

How to use another Apple ID to submit an already-online iOS app to the App Store?

My company had outsourced an iOS app to another company, and they published the app on the App Store using their Apple ID. The app have been available for download for a few months and has a number of users. Now my company developed a slightly newer version of the app and would like to distribute the app using our own Apple ID. What's the correct way to do it? The major concerns we have are:
Should we submit the newer version using our ID before or after we take the old app down from the App Store. Would it happen that the newer app get rejected because Apple feel the two apps are too similar? (Actually they are quite similar, for that the update is slim.)
Is there a graceful way to notify the currently online app's users that they should switch to the newer app? And How to coordinate it, since the newer app may take a certain amount of time to get approved.
Thanks.
There are some different scenarios here, I am going to try to address some of them to see which one helps you the most:
1-)You have a current application that contains no use of push notification and no use of in app purchase. This is the easiest one. Basically, It does not matter what version the user has had before. You can remove the old one from the previous developer account and add it to the new developer account. By completely removing the previous application (not just from the app store listing, but from the developer account), you can reuse the bundle ID. When the user reinstall the app, the user will be able to replace the old application with the new application (note that the new application will not appear on the user's update list).
2-)You have push notification. Here, you will have to keep the old application if you wish to maintain the push notification certificates, so, the new application will have to use a new bundle ID, which means that the app will appear on the user as a new application, and the user will be able to have both app simultaneously.
3-)You have in app purchase and subscriptions. You will need to remove the old in app purchase entries from the old developer account, and add it to the new account (if you wish to reuse the product id, if not, you will have to create it either way).
I am not sure what kind of measure you need to take if you are using iCloud and/or other services. Best course of action is to contact Apple developer support. They will give you some guidance on what to do with your specific case. Also, when submitting, make sure to point to the reviewer that you are trying to move the application from one company to another. I think they can access review notes from the review to the previous submission(instead of reviewing it as a new app), and speed up the process.
Edit: You can not transfer apps between companies using iTunes connect. More information here: link

Share in-app purchase across apps on a single device

I'm thinking about building a series of iOS apps.
Each app will be purchased individually but I'd like in-app purchases within any of the apps to be universal. ie, pay for it in one app of the series, it's available in any other apps installed to use too.
Is this possible without forcing the user to create an account of any sort?
Many thanks
Answer is NO, Reason is all your IAP are identified by the bundle identifier and that is unique for each application, as all the IAP's are specific to the bundle identifier you can not share those.
There is another way of achieving what you asking for, I don't know all your requirements still I would NOT follow this solution, still I am writing to know some options.
You can sharing the keychain across the applications and keep track of purchases across apps.
Keychain data is not deleted on deletion of the app
If user resets/restore phone keychain data can get deleted and you will be at dead end, as user has to restore the content from your 1st application to use in 2nd application... (yeah confusing.. right ?)
There may be some other complications I am missing right now.. good luck

Will Appstore accept this kind of application?

So I already have 2 versions out on appstore..
One app is a free but limited version.
The other is a paid unlimited. The basic layout..
I have had questions from companies wanting to buy the app and give to their employees. So they don't have to buy the app with their personal accounts..
So I was thinking of releasing a 3rd version that prompts the user for a license key on first start, if the key is valid the app starts and works until reinstalled or w/e. If the key is invalid the app just keeps prompting for a valid license.
Now I remembered reading somewhere that apple wouldn't allow apps that had no public function or something like that. Which this app wont have unless u have a valid license..
But since I do also provide a valid public version of the app, will this one get accepted? Or have they removed theese rules?
Any insight in the matter would be helpful!
Edit:
Forgot to mention that the reason im looking to use the license is because i have the same app for android and want the companies to be able to buy for both device types, not just apple devices.
Thanks
I believe you should use the B2B functionality in ITunes Connect: http://developer.apple.com/support/ios/volume-purchase-program.html
Also check: https://developer.apple.com/appstore/resources/volume/
I did something very similar to this some time ago, they seemed ok with it (then at least), they just asked for a license key in the complementary info (during the app submission) to go through all their usual validation tests.
Klassmating has an app in the app store that has no public functionality unless you are a student at a specific university. So it seems like you can have apps like that.
Without knowing exactly, I would assume Apple would reject such an app from the store (mainly because it would allow you to sell applications "behind their back" - i.e. sell licence keys and not using in-app purchase) :-)
However, there are two possible solutions to your problem that come to my mind:
Create and distribute gift codes (would be a problem if you had to give out too many of them).
Do an ad-hoc distribution of your app to the companies. Basically they would need your application bundle and an ad-hoc mobile provision file. Then they can simply install your application by dragging it to iTunes.
There are different official iPhone application distribution methods.
In which for your current requirement,I suppose you can use the Custom B2B Apps,where you can deliver apps directly to your business customers who have a Volume Purchase Program account.You can get more information from the link provided above.
cheers!
Yes, I too have had an app in the app store which works like this. You have to provide them with a key/licence to access the app functionality so they can test it fully.
I've had an app rejected for this very reason - required a username and password, not a licence key, but was free. They said in contravened the licence terms regarding in app purchases.
Mine allowed time limited free trials from within the app, but full functionality was restricted to purchases outside the app. Apple wanted their 30% cut of the subscription cost so it was no dice for us.
On the other hand, the app store review process is seemingly entirely random, so who knows.