Variant of this question have been asked before. But from the current Google documentation it seems things have changed and many answers are obsolete.
I'm completing an App that will be sold on the Google Play Store. The last thing to implement and test is license verification using LVL. The licensing server will only respond with ERROR_NOT_MARKET_MANAGED.
https://developer.android.com/google/play/licensing/setting-up.html says "Using the Google Play Developer Console, you can debug and test an application's licensing implementation, prior to publishing the application". Then Table 1 on this webpage clearly states a publisher account "Can check license before upload".
I interpret this to mean that, when logged in to my test device using my publisher account I should be able to get a licensing server response for my App without uploading an APK.
Am I mistaken? I ask because other related stackoverflow questions state an APK must be uploaded. That was the case in the past but doesn't appear to be true now if I am interpreting the documentation correctly.
Related
I gather from other postings that it is near impossible to my check licensing code until i publish a new app for the first time in the google play store?
I have uploaded my apk to the Play dev console, (promoted to prod, but unpublished), tested with account owner ID, and still come up with "ERROR_NOT_MARKET_MANAGED" as the license response.
If true what is a good strategy for not making it available to anyone else who might purchase and then complain that it fails licensing checks before i test licensing and fix any related coding problems? Can I make it available in "no countries" at first? Should I put a ridiculously high price in a single country (and does that have to include my own country)?
I would hope there are better solutions to this dilema.
Assuming you are using Google Play Licensing, they write:
Note: Previously you could test an app by uploading an unpublished "draft" version. This functionality is no longer supported; instead, you must publish it to the alpha or beta distribution channel. For more information, see Draft Apps are No Longer Supported.
After much screaming and tearing of hair I have finally gotten In-App billing and Play Services sign in to work in my Android application - kind of. Google should really be ashamed of themselves, the process has been gruelling to put it mildly. One example of extremely important information that is mentioned kind of like an afterthought on the tutorial pages: "You must create the new client ID in the Google Play Developer Console, not in the Google Developers Console."
I have now reached the point where my debug APK works with Game Services sign in (leaderboard and achievements), and my release APK works with In-App billing. But not both at the same time. I know that debug APK does not allow for In-App billing, but why does not the Game Service sign in work when debug sign in works? I have triple and quadruple checked that package name, client ID, application ID, debug AND release certificate SHA1-fingerprints and everything matches up perfectly, but still no luck. I get the dreaded "There is no linked app associated with this client ID." It's obviously linked, as it works using the debug certificate.
Are there yet another restrictions or minor detail I have to think about to make this ")=#(¤/"¤() work? :-)
Well you've probably seen some of the tales of woe from last year e.g.
There is no linked app associated with this client ID
and
Google Play Services and "There is no linked app associated with this client ID"
and
Google Play Services - Sign in - Client ID debug vs release
However, I do recommend that you review all the different contributions, because it is highly likely that one of these will fit. Even my own humble submission re. the app_id problem is worth 30 seconds of your life.
What troubles me most, is it that it looks as though you may have been trying to do this stuff from the api console (now called the developers console) as opposed to the Google Play Developer Console. That was a major cause of problems last year (although Google made some improvements as a result of all the difficulties that people encountered). If all else fails, I would recommend creating new definitions from scratch in the Google Play Developer Console - at this point the documentation for Google Play Game Services is very accurate. I have not used in-app billing so I could not comment on that.
I'm getting
"User is not eligible for this purchase"
message from google play while trying to purchase as a test.
I've uploaded singed apk in google play, published the billing item(in app product), saved the apk as draft, still getting this error.
Also I was trying to purchase from test user device.
Edit:
The actual reason for this error:
If an unauthorized user try to purchase an item then this message
should appear.
So if the App is not published, a non test user should get this error while try to purchase.
I realized that, Google play takes time to update the changes in app store. So you can not expect the changes immediately. Rather you should wait, in my case it took average 2/3 hours.
Still there may be some unknown error, which I could not figure.
My Cases:
First I was trying to purchase from my test device still got this error, But after waiting some time I didn't get this error. So I think the time was reason here.
Secondly I was trying from a non test device, which was an unauthorized device as the app was not published.
You must use, only, Test Account for Testing purposes. You can not use market account or others for purchasing your app while Testing.
From Android Docs
The synchronous response for a CHECK_BILLING_SUPPORTED request provides a Bundle with a server response code. A RESULT_OK response code indicates that in-app billing is supported; a RESULT_BILLING_UNAVAILABLE response code indicates that in-app billing is unavailable because the API version you specified is unrecognized or the user is not eligible to make in-app purchases (for example, the user resides in a country that does not allow in-app billing). A SERVER_ERROR can also be returned, indicating that there was a problem with the Google Play server.
see details here
This error comes when everything you done is perfect, you have used signed APK with the proper product id, but you have to note that the account that you are using might don't have proper valid credit card details.
So whenever you want to buy any product even with test account, that account should have valid credit details.
You have to specify test account in Edit profile of your publisher account
Licensing & In-app Billing
Test Accounts box
There is a now an additional situation which can result in the "User is not eligible" message.
It comes down to this recent change in the licensing system:
The Licensing keys are now managed for each app individually. To see
the license key for an application, switch to the new design and go
to the Services and APIs for the application
You can no longer use the old "shared" license key when creating new apps. You must switch the Google play developer console to the "new design" and use the license key for each specific app from that app's Services and APIs section.
If you try to use the old shared key the behavior is as follows:
If app is not yet published, tester will receive "User is not
eligible for this purchase" message.
If app is published, user will go through purchase process and
be charged for purchase, but the app will not receive a "purchase success" message.
TL;DR: Make sure you are using the new per-app license key and that you have copied it correctly.
I had the same issue.
I fixed it by uploading apk via "Old Design" of Developer Console.
Steps:
rename application package.
create release build and sign it with your developer key.
upload it to the Developer Console Old Design. You will be asked about switching to the new design for getting public key. DON'T do it.
Perform all next actions from Old Design.
After creatind and publishing inApp content switch to the New Design and take your application security key.
Put new key to your application, rebiuld and resign.
Install your application to the device.
Wait 2-3 hours.
Profit.
lved it. There is some problem in the "New Design" of Developer Console. I deleted the apk and created a new app from "old design" and it worked. Price points(In-App products) got automatically added again as the app package name is exactly the same as old one I deleted.
Also make sured the new public key is used which is app specific now.
Make sure you fill in the #gmail.com address as a licensed test account. Other e-mail addresses associated with your Google account will NOT work.
For the "Unpublisched" app, enter your email account under "Account details" and "Gmail accounts with testing access" in Play Developer Console. Also one need to wait 24 hours.
The android:versionCode set in the Manifest must be the same as the one active in Google Play console
I met this problem and was bothered for one or two day.I delete the test device's gmail and added it again. After then it works.
I am currently working on testing the response, which is returned from google play
when you have uploaded a draft apk to the market and I came across the following situation:
I uploaded an application which is still unpublished and when I wanted to test the returned test response from the licensing server I always receive the specified response in the dropdown nondepending on the google play account I am currently logged in with. I mean if I specify a gmail account to the test account I receive the test response even if I am using another gmail account on the device. I think I should receive NOT LICENSED if the gmail account I am using on the device is not specified in the test account in the google play account. I am clearing the application cache everytime.
Now I am a little bit confused if I publish the application will I have some problems with the license verification process. It is going to be my first published application that's why I am asking for some help. I have read lots of discussions and these in the android developers guide but I think I am missing something.
The version code is the same to the uploaded applications;
The application is signed and everything is done according to the specification of the android developer's guide.
I will highly appreciate if anyone can help about this or can suggest a complete processing steps of testing and publishing an application to google play.
You need to create Test account for testing licensing properly, all other users will get status of licensed users because application is not yet published.
see this, it may help you
Note: If a paid application has been uploaded to Google Play but saved only
as a draft application (the app is unpublished), the licensing server
considers all users to be licensed users of the application (because
it's not even possible to purchase the app). This exception is
necessary in order for you to perform testing of your licensing
implementation.
Here is the link
http://developer.android.com/guide/google/play/licensing/overview.html
I have already wasted days with what seams to be an error in the Google license verification framework.
I am testing the Google market License Verification Library. I have thus far:
- created a library and test project from the provided library and sample sources with no changes (except public key and other obvious things).
- created a publisher account on market
- I have not uploaded the application to the market
- installed the sample application to a device
- In the developer console added test accounts
- I have set various test responses in the developer console
My problem is that I always get a NOT_MARKET_MANAGED response - regardless of settings in the developer console test response.
The docs state that I have to be signed in a device with a publisher account. It does not say what does this mean specifically.
I have added a publisher account to the accounts in the device but this does not help. Since the License Library depends on Market application I have changed the account in Marker application. No effect either.
I have googled around and found something in the line "… that I have to be signed in with publisher account as primary account…". What exactly is primary account remains vague. Some sources state that a factory reset is needed for a primary account sign in. I have not tried that but I think you loose whatever you made on the device, installs, messages, contacts and such. This is impossibly impractical.
My question is: How does one test the application against various responses?
On the developer console it is clearly stated:
This License Test Response will be sent to devices using
publisher_account or the Test Accounts listed above for applications
you have uploaded to Market. Additionally, this account (but not the
Test Accounts) will receive this response for applications that have
not yet been uploaded to Market.
The same is also stated in this section of docs:
http://developer.android.com/guide/publishing/licensing.html#test-acct-setup
I know that testing is possible with uploading the apk to the server. But besides setting the test response in developer console one has to do:
Compile the application without debug flag
Create a certificate
Sign the apk with certificate
Upload the apk to the server
All this is a major PITA. Something that could be just a simple run and test is now a whole procedure, just for testing the most basic functionality of a prototype.
Taken into consideration the discrepancy between the docs and License Verification Framework behavior there is only one possible conclusion. Either docs or implementation (or both) are flawed.
Please read the Official Dev Guide carefully:
Setting test responses for license checks
Android Market provides a configuration setting in your publisher account that lets you override the normal processing of a license check and return a specified static response code. The setting is for testing only and applies only to license checks for applications that you have uploaded, made by any user signed in to an emulator or device using the credentials of the publisher account or a registered test account. For other users, the server always processes license checks according to normal rules.
And follow David's comments.