Does AppStore distribute a license key automatically after purchasing an application - iphone

From my previous experience with shareit I implemented this purchase/validate process
Provide shareit a list of valid license keys
shareit sends an email to the user with a valid license key, selected automatically by shareit system from the list of keys I provided
User starts the application and application asks for a license key
User enters the license key provided by shareit through email
Application checks if the provided license key is valid through a web service hosted on my server
The server sends digitally signed license file back to the application
On subsequent launches application checks if digitally signed license is provided for the current machine
My question is: Can I provide app store a list of approved license keys that will be distributed automatically to the user after successfull purchase
If not the only solution I can think of is publishing the application on app store as a free application and then redirect user to shareit when app is launched on IPhone so that she can purchase a license key which is known by me

I don't quite get why would you need to distribute license keys to iPhone users. App Store has its own business model which you have to deal with. If you would like to make a 'try & buy' version of your app, you can do so with the In App Purchase mechanism. It gives you two options:
Include all of the functionality in the initial release of your app. Your app may downloaded from the App Store for free, but users will get the paid functionaly only after purchasing it from within the app.
Although Apple docs don't specifically mention the ability to purchase license keys via In App Purchase mechanism, you can present it as an unlimited lifetime subscription. What I mean by this is that your users can indeed purchase license keys, and it will be up to you and your server to let your mobile app reveal its hidden functionality after the purchase has been registered.
Relevant link

Related

How to share final .ipa file with clients to upload into itunes connect?

I am a developer and I am making an app for my client.
I have indie developer account so During testing period I am using client's UDID to build ipa file so they can test on their iOS devices.
Now client will distribute final ipa file into itunes connect.
so What are the different legal solutions for this?
Assume that they have indie developer account too and client is non-technical so they don't want to mess with xcode or source code.
And in future I will do the same for other clients too.
In order to submit an app to iTunesConnect, it has to be signed with a valid distribution certificate and provisioning profile that match the developer account they are submitted to. That means that someone (whether it's you or your client) needs to create an appID, a distribution certificate and a matching app store provisioning profile that you will then use in Xcode to sign the ipa that will be submitted to the store.
Since your client isn't a technical person and you will most likely be able to do that process much quicker and more efficiently than he/she will, the best solution would be for your client to simply give you the credentials to the developer account and for you to perform these steps there. If that's not an option, and your client has a company account (and not a personal account), he/she can give you access to their account by adding you to their development team - that way, you'll still be able to perform the necessary actions on the account, without having the admin's personal credentials.
As for the submission itself, once you have a signed archive, you can either submit it directly via Xcode or you can send the signed ipa to the client, and he/she can submit it via Application Loader from their admin credentials. But, you will still have to sign it with valid certificate/profile from the right developer account.
I hope this makes sense and makes things a bit clearer. Good luck.

How to share In-App purchase data between two iOS apps?

I want to share In-App purchased product identifiers from one app(say "App1") to another app(say "App2"). Both run on iOS 7 devices. And more importantly since "App2" was released long time back, both the apps have different Team IDs. When the user clicks on a "Restore purchase from App1" button I want "App2" to unlock certain features based on the purchases the user has made in "App1". What is the best way to achieve this?
I dont want to use UIDocumentInteractionController or UIActivityViewController because that would require unnecessary user interaction.
Key chain items or iCloud key-value storage cannot be shared because both the apps have different Team IDs.
Can't use an exclusive server through which the two apps can communicate.
You cannot do this by using the IAP API. You could store the information on your server and unlock it for a user, however, this is against the App Store Review Guidelines:
Apps utilizing a system other than the In-App Purchase API (IAP) to purchase content, functionality, or services in an App will be rejected.
And technically you would not be using the API if you checked against your own server and provided the content through that.
Now this looks possible for subscriptions with App Bundles: https://developer.apple.com/documentation/storekit/in-app_purchase/offering_a_subscription_across_multiple_apps
You can offer customers auto-renewable subscription services that are accessible through multiple apps across one or more operating systems.
In order to offer this functionality, your server must grant access to the subscription content across all apps, despite the user having purchased the subscription within a specific app. You can use a unified account management database along with server-side receipt validation to validate a user's purchase and ensure in-app transactions are handled. By entitling subscription access from your server, you can provide users the ability to access your subscription across multiple apps.
It's Possible using Authentication API
step 1: When purchased product successfully to store status inside API
step 2: Then call API every time of didFinishLaunching to check purchase status and use multiple APP
Another benefit is make payment without any payment gateway...

Is There A Way for Non-Devs To Release iPhone Apps?

I'm sorting through the various Apple docs, but haven't seen it yet.
Here's the deal: I've created a series of apps that are for a service for NPOs. These are hugely popular (albeit in a very small pond), and I have been asked to make customized versions for some of these organizations.
It's a FOSS app, but these outfits can't get iOS programmers to build and release the apps. They are willing to set up App Store accounts, but don't have the geeks on hand.
Due to the way the organization manages its IP, I am not allowed to release branded apps under my app store account. They need to release under theirs.
I don't want to set up an enterprise account for this. I haven't read up on that, but I'll bet that it would not be practical, anyway.
Is there a reasonable way for folks to take apps built on one account, and apply a new provisioning profile, and release it via another account?
Yes a company can take any developer app, sign it with their own certificates, and submit it using their own iOS enrolled team leader ADC account. They can even hire a contractor or temporary employee and legally authorize them to do this work for them.
If you do this type of subcontracting, you might want to get authorization in writing from the CEO, COO or chief legal consul of the company to do so.
you can use a different provisioning profile and deliver the app to the other guys. You can have multiple profiles in your X-Code and select with which one you want to sign the app when you create the archive.
You can either do this yourself by getting access to your client's app store signing certificates, or you can get your clients to use their codesign tool - details on the latter technique can be found on google - here is one example.
Enterprise accounts don't let you release on the App Store.
A typical way of handling this is for them to set up an account and give you the details for the team agent to log in. You then generate a key pair and a certificate signing request in Keychain Access. You log in as the team agent and use the certificate signing request to get a distribution certificate, which you then download and open - this will install into the keychain. Export the key pair and supply this to them so that they aren't screwed if you get hit by a bus or something.
From that point on, it's all stuff you should be used to. Xcode knows which private key to sign the build with because it matches the provisioning profile. It knows which provisioning profile to use because the app ID in the profile matches the app ID in the Info.plist file. Beta testing with ad hoc builds is the same as normal, except you register the UDIDs after logging into their account, not yours. Archives are not tied to your account.
When you submit the app through Xcode, you'll have to supply the team agent login details again. The submission will show up under their developer account, not yours.
Technically speaking, I think it breaks their developer agreement with Apple for them to supply a third-party (you) with their login details. However I don't believe it's possible to delegate all of the privileges necessary to submit an app to anybody other than the team agent, and the parts that can't be delegated aren't easy to explain to a non-technical person. You can script some of it to make it easier, but it's easy for them to get into a mess, so it's usually best if they let you handle it all.

Enterprise Developer account or Standard Developer account?

We're developing an iPad application for a client, who wishes to distribute the application to only those customers who have purchased the license from him for 'x' number of users. For example, if an university buys the license from him for say 50 users/devices or another company may buy the license from him for 100 users/devices. What would be the best way to distribute such an app. After doing some research iv come across 2 ways for this but each with its own hiccups.
1) Distribute it through the App Store with a standard developer license and authenticate the users of the app. Only if the users are authenticated by the server, would they be able to access and use the application. This allows my client to restrict the users to only those who have obtained licenses form him.
But i have heard that Apple would reject such apps that provide only exclusive access to some users and not to all.
2) The other option is the Enterprise Developer account where he would host the apps on his site and the clients who have obtained licenses only can download it. However, I believe that enterprise applications can only be developed for in-house employees. i.e if he has the enterprise account, the app can only be used for his employees as it would work only for the devices authenticated with the unique DUNS number.
Anyone has any workarounds for this? Any help would be much appreciated. Thanks.
The client I have just developed an app for has the requirement for users to login to their service before they can use the app. They place the app in the store with a clear indication a login is required. The app is free to download so no one gets caught paying for something they can't use.
We have just submitted the latest app to the store and are waiting for approval*. When submitting we included a full login for the reviewers to test the app with. This was in the review notes and remains confidential. They have an existing app already approved which works the same way.
As part of the app we also included a demo mode with static content bundled with the app which allowed access to all the functionality but only for that very limited set of data.
The client has the Enterprise programme which allowed us to beta test the app with designated users but that was with the usual 100 device limit (with devices able to be removed at renewal time only). Both the individual developer and the company program are allowed the same number of devices but you want to be able to join the clients team as developer so they should go for the Company program. The client will need to be the Agent for the submission and that is fixed as the first account they sign up with. We're trying to change the agent for our company now and it's not something you can do online you have to send Apple a request. They should then add you as a developer for their program. You can be a member or an admin but only they, as the Agent, will get to sign the app for distribution.
I sure hope you aren't correct about rejection because of the login service or I'm going to have a very disappointed client on my hands.
*EDIT: Our application was approved by Apple at the first attempt so there was no problem with this approach.

Transferring ownership of an iPhone app on the app store

My team and I have an app which we're going to be submitting to the store pretty soon, but we know that we'll be selling the app to another company in the near future. Does anyone have any experience with moving an app's ownership to another account?
Specifically, when I sell an app to another company...
How do we move the app to their account (what's the mechanism)?
Can my users still get updates (released by the new owner) without having to re-buy/re-download the app?
Starting June 11, 2013 this has officially become possible.
Here's the official note:
Dear developer,
Apps can now be transferred from one developer to another within iTunes Connect, for example after an acquisition or when a distribution deal expires. Transferring the ownership of an app does not affect the app’s availability on the App Store. All ratings and reviews will be transferred and your customers will continue to have access to all available app updates.
To transfer an app, go to the app’s App Summary page in the Manage Your Applications module on iTunes Connect and click Transfer App. Make sure that:
• Your account is active
• You have accepted the most current version of your contracts
• Your app has at least one approved version
• Your app is in the Ready for Sale, Invalid Binary, Rejected, Developer Rejected, or Developer Removed from Sale state
• Any associated In-App Purchases are in the Ready to Submit, Ready for Sale, Rejected, Developer Removed from Sale, or Approved state
• You know the Apple ID of the recipient’s Team Agent and their Team ID.
For more information on app transfer, see the video tutorial on iTunes Connect. To find answers to common questions about app transfer, see the FAQ on iTunes Connect.
Regards,
The App Store team
UPDATE: THIS ANSWER IS OUT OF DATE. IT APPEARS TO HAVE BEEN CORRECT AT THE TIME IT WAS WRITTEN. THERE IS NO NEED TO DOWNVOTE IT, BUT DON'T BELIEVE IT EITHER!
Official answer is No. From the iTunes Connect FAQ:
I sold my app to another developer and can no longer distribute on the
App Store. Can I transfer the app to
the new developer's iTunes Connect
account?
At this time, apps cannot be
transferred to another developer
account. If you would like the app to
be sold through another developer
account, you will need to remove the
app from sale in the current iTunes
Connect account and upload the app
under the new iTunes Connect account.
Uploading the app to a new iTunes
Connect account will disable current
customers from receiving automatic and
free updates of your application. All
customer reviews, rating and ranking
information will also be reset.
Additional resources that confirm this, from FutureTap developer Ortwin Gentz, back when he purchased WhereTo? from Sophiestication Software:
transferring an iphone app last episode
carved in stone transferring an iphone app
Follow Up: After all: it is possible (as of late March 2010).
I haven't read all comments or other threads about this issue, so this might be obsolete, but it seems it's basically related to the iTunes-related structure of the appStore.
You can't be part of the Beatles and the Rolling Stones Bands...
Anyway, eventually, a colleague managed to get things sorted out, and we got our App (which was running under my private, single Dev account) running under a new, enterprise account. We kept our ratings, our #1 place in our category in the appstore, and all in all it went smooth (after several hours of phone-calls with apple).
As far as I can recall, the main problem was those help-desk folks were knowing things were going to change, but they didn't know by when and how. Probably due to iPad coming and related timelines involved). Anyway. It's possible, and it's pretty easy. Send your request, wait a couple of weeks (might be days by now), and you'll have the transfer. One issue though: They may have some bug in their migration code, because apple mixes firstname and lastname of the dev / master account after migration. well, who cares.
I had my own experience with this, and the answer I got from Apple Developer Relations (Although it took a month to get an email response and 6 weeks for the follow up phone call) was (in short) that they currently don't offer any way to transfer individual applications from one developer account to another.
He did so by saying that there was a single "Option" for doing this sort of transfer, which is to delete the app from the account that it is currently on, and then resubmit to the Apple store from the new account under the same name (but it would have a new appstore id). I pointed out (and he acknowledged) that this would delete any existing user reviews, ruin the upgrade path for existing users, break iAds, in-app purchases, and game center integration. So it really isn't a solution at all.
He also said that it isn't possible to transfer ownership of all your apps to another existing account (they seem to lack the granularity to move individual apps). However if I wanted to give up all my apps to another individual it could be possible by creating a corporation (probably S-Corp, although he didn't advise), transferring ownership of my account to the S-Corp (which would be allowed if I were a part owner), and then selling the s-corp to the new owner. (Yikes right?)
The method I plan to go with is the following (I'll update with my success), In my specific case I have a paid application that (.99) that I'm trying to transfer to another owner:
I will create a lightweight application using the same AppID that is designed to inform users that the Application has changed owners, and provide a link to the app store where they can download the new application. When launched will upload a hashed form of their UDID to a server (which I will now have to maintain) listing them as a previous customer.
I will upload this new lightweight app to my existing account as an upgrade to the other existing application (so that when users update, they will instead be marked as an existing customer, be presented with a message explaining the situation, and a link to the new app)
I will convert my paid app to being a light application that has some functionality, but requires an in-app purchase of .99 to get the full functionality. Additionally, this new app will check with my server to see if the UDID is in the existing customers database, and if so give them full functionality (without having to do the in-app purchase).
... ARGHH! :) It's an ugly experience for the customers and a whole hell of a lot of work for the developer... but the only option provided by Apple. (Although, I'm not sure that it will even work, as it's entirely possible that they will reject my lightweight "update" application from the store, and thereby prevent the hack upgrade path as well)
UPDATE: Too much work for the person that I was trying to give the application to. Ended up not proceeding with the plan. Think that it could probably still work, and would love to hear from anyone who tries it or pulls it off :)
iTunesConnect now allows App Transfers given certain app restrictions (no iCloud or Push Notifications apps are allowed currently. Local Notifications are ok, of course.)
See the iTunesConnect FAQ on App Transfers... https://itunesconnect.apple.com/WebObjects/iTunesConnect.woa/wo/10.0.0.9.1.0.9.1.5.10.1
You can only initiate or accept a transfer if your iTunesConnect login has the "Legal" role permissions.
AFTER THE TRANSFER:
The teamId and bundleID will not change at all. Nor will any of the in-app purchase Ids.
In my company's developer account, I now see an app with EXACTLY THE SAME TeamID.BundleID as I saw in the source code that was purchased from the other company (and that source code was delivered separately, not via Apple)...
ex. BundleID = com.<some-other-company>.<purchased-app-name>
This bundleId is now listed among my other apps listed in iTunesConnect's Provisioning Profiles. I simply created new Development and Distribution/AdHoc provisioning profiles for my newly purchased app. Then I downloaded the new provisioning profiles into Xcode, just like for any of your own apps.
Quite painless. Thank you Apple.
What Lou Franco said.
Where To example is really good to consider, as they eventually had to settle for the fact that all existing customers need to buy the app again. Apple simply does not have the background infrastructure to change ownership.
Another bad consequence of the inherited made-for-music-sale-machine that iTunes originally was. Songs apparently don't change owners.
See here, for Where to resolution: transferring an iphone app last episode
Since now, this is now possible using iTunesConnect.
Apps can now be transferred from one developer to another within
iTunes Connect, for example after an acquisition or when a
distribution deal expires. Transferring the ownership of an app does
not affect the app’s availability on the App Store. All ratings and
reviews will be transferred and your customers will continue to have
access to all available app updates. To transfer an app, go to the
app’s App Summary page in the Manage Your Applications module on
iTunes Connect and click Transfer App. Make sure that:
Your account is active
You have accepted the most current version of your contracts
Your app has at least one approved version
Your app is in the Ready for Sale, Invalid Binary, Rejected, Developer Rejected, or Developer Removed from Sale state Any
associated
In-App Purchases are in the Ready to Submit, Ready for Sale, Rejected, Developer Removed from Sale, or Approved state
You know the Apple ID of the recipient’s Team Agent and their Team ID.
From what I understand, this can be done, but it requires manual intervention by the iTunes Store team, can take months to go through, and may involve some periods when your app is not on sale under either account. If you know who your customer is going to be, just put it under their account to begin with. If not, remember for the future that flipping apps is not an easy thing to do, and adjust your business model accordingly.
It is possible since June, 2013. You can transfer an app to another developer very easy - here is an official FAQ from Apple (available for registered developers).
Besides the already mentioned things I recognized, that certain issues may arise which are nowhere mentioned in the AppStore Guidelines or the documentation.
I found out several issues with apps having subscriptions (which are as of Jan 2015 not transferrable). After trying to transfer an app I found out via the FAQ in the iTC Developer Support Center aka Help Section the following things (Link to FAQ section)...
You cannot transfer apps that contain or use:
iCloud entitlements in any version of the app
Passbook entitlements in any version of the app
A SKU that matches the SKU of one of the recipient's apps, including previously-removed SKUs
In-App Purchase product IDs that match the In-App Purchase product ID of one of the recipient's apps, including previously-removed In-App Purchases
Approved auto-renewable, non-renewing, or free subscription In-App Purchases, including previously-removed In-App Purchase subscriptions Sandboxed Mac apps that share the Application Group Container Directory with other Mac apps also cannot be transferred.
To transfer any of these types of apps, the recipient must create the app as a new app. Current customers, ratings, and reviews cannot be transferred to the new app.
Also the usual requirements are:
To transfer an app, make sure that:
The transferor and the recipient have active developer accounts and accepted the most current version of all master agreements that are currently in effect
The app has at least one approved version
The app is in the Ready for Sale, Invalid Binary, Rejected, Developer Rejected, or Developer Removed from Sale state
Any associated In-App Purchases are in the Ready to Submit, Ready for Sale, Rejected, Developer Removed from Sale, or Approved state
You know the Apple ID of the recipient’s Team Agent and their Team ID If the app uses iAd, the transferor and the recipient must have accepted the most current version of all iAd contracts.
Hope that helps avoid mishaps before you try to transfer an app.
As ownership transfer is currently not-supported and an "exception process", it makes sense not to count on it as your mode of operation.
The big problem you're facing is: the app is tied to a developer account and you want to keep YOUR developer account after you transfer the app.
Hence, why not set up a NEW developer account, the sole purpose of which is to be the holder of this one app and, when you sell the app, you can just transfer the developer-account credentials to the new owner.
At that point, they can update the name, address, company name, bank info, etc.
Of course, your transfer contract will have some verbiage explaining how, in the interim, any moneys you get from Apple will be fwded to the new owner (put a time limit -- like 90 days -- on this so they don't take forever to update the info.)
I've not tried this, but it seems like a viable solution. Again, the problem is that the app is tied to developer account and you don't want to transfer yours. Hence, this Just Makes Sense™.
Recent update from iTunes Connect:
I sold my app to another developer and can no longer distribute it on the App Store. Can I transfer the app to the new developer's iTunes
Connect account?
No, you can’t transfer the app to another developer account on iTunes
Connect. To add the app to another account, remove the app from the
current account and upload it to the new iTunes Connect account.
Note that uploading the app to a new iTunes Connect account will
disable current customers from receiving automatic and free updates of
your application. All customer reviews, rating, and ranking
information will be reset. You will not be able to reuse the app name
and SKU in the old account. If you have uploaded a binary or used the
app with the iAd Network, your Bundle ID will not be reusable either.
Guess I'm late to the party but Apple just added a button to iTunes Connect to do just this. Sign into your iTunes Connect account, go to 'Manage Apps' and click on the app you want to transfer. In the section on the top right, there's a button to transfer your app now.
Cheers!
As far as I know there is no way to transfer apps to a different user/company. I think the app should be in your customers account from the beginning. Otherwise you probably have payment problems too (people paying you instead of your customer).
Why not just sell the app to a customer before releasing it. If they want to see it running before it is released, just sent them a version built with an ad-hoc certificate.
The are additional considerations:
If you just can switch ownership of the Application behind the scenes, thus changing the contract, but not the application itself, you might be fine.
But if you're just going to transfer your source code, the future owner of the app will have to sign it with his own certificate, which will basically render the app as a "new" one.
Users will lose their settings (if your app did some configuration persistence) and they'll lose the app history in the appstore (ranking, etc.).
As per a new announcement from Apple today (just after iOS 7 release) this has become possible .
It says "Apps can now be transferred from one developer to another within iTunes Connect, for example after an acquisition or when a distribution deal expires. Transferring the ownership of an app does not affect the app’s availability on the App Store. All ratings and reviews will be transferred and your customers will continue to have access to all available app updates."
Something helpful:
Apple site documentation with new itunesconnect UI released in Sep,5,2014
Transfer code using github
Note: Use agent role account, and maybe you should click "Agreements, Tax, and Banking" to request Contracts first.
I don't believe that you can transfer ownership to another account. But a simple solution would be to add URL schemes to your app to allow data to be transferred from your app to a new app that your customer would release with the same source.
The new app would have to be free though (maybe the lite version?), so your old customers wouldn't be forced into buying it again. The only real downside I can see of this is that the new app would basically be starting over again from a marketing perspective, which is no minor thing of course!
Mobile Orchard had an article on data migration from Lite to Paid versions of an application that may be of interest:
Lite-to-paid iPhone application data migrations with custom URL handlers