In app billing giving me errors - java

I've been playing around with both dungeons sample in app billing code with google and blundell's tutorial in app billing code. Both of these projects are basically out of the box besides changing the public key, renaming the application, and uploading it to google which I have already done. The two apps were working fine just recently (around 3 days ago). Now i'm getting this error both in the LogCat and the Device.
Device:
Error retrieving information from server. [DF-DFERH-01]
LogCat:
10-13 02:26:12.449: E/Volley(916): [90] BasicNetwork.performRequest: Unexpected response code 500 for https://android.clients.google.com/fdfe/purchaseStatus
10-13 02:26:12.457: W/Finsky(916): [1] CheckoutPurchase.onErrorResponse: DisplayErrorMessage[Error retrieving information from server. [DF-DFERH-01]]
10-13 02:26:12.457: E/Finsky(916): [1] CheckoutPurchase.setError: type=UNKNOWN, code=-1, message=Error retrieving information from server. [DF-DFERH-01]

So after contacting Android support here is the answer I got. I have yet to verify if unstatic testing works. I will let you all know.
Comment #190 on issue 35564 by theother...#gmail.com: error
(DF-DFERH-01) http://code.google.com/p/android/issues/detail?id=35564
Hi everyone. So I experienced the same problem testing the static
responses these last few days. I decided to ignore them and go ahead
and test real products (I was able to do this since my app already had
live versions published, without In-app purchases of course). Testing
real products did work however.
After reading the IAP Testing guide
(http://developer.android.com/guide/google/play/billing/billing_testing.html#billing-testing-static)
I came across a quote:
"Note: Making in-app billing requests with the reserved product IDs
overrides the usual Google Play production system. When you send an
in-app billing request for a reserved product ID, the quality of
service will not be comparable to the production environment."
So it seems something is indeed wrong with the static response
service, but this does not reflect the conditions of the actual Play
Store. I can vouch for this because my now updated and live App has
IAP working without problems. So if you're having this problem, test
real products if you can; it will probably work for you.

Related

Mobile Sound Tracker Application Architecture

I have an assignment, but I can't seem to get my head around it. I've been tasked to create a mobile app on Android Studio using the microphone sensor to record audio (Parameters: Duration & frequency). The data/sample is then stored locally, perhaps using SQLite to store the id, date, time, location and sample. Let's say after 10 samples (this is where it starts to get confusing for me), the samples are bundled up and sent to the communication server which I believe OkHttp client is used in this case. The data gets sent to a local server (Apache?) and a website (Springboot) is used to retrieve the information and show the samples on Google Maps.
https://imgur.com/a/3cXzCQl
Link to application architecture is above. I have no doubt it is wrong, but would love some insight on it please. Also, I very new to all of this so I'm sure there are a lot of gaps in my message above. If you have any questions please feel free to ask!
Technologies I've been recommended to use:
Local Server: Apache
Website: SpringBoot
Communication tool: OkHttp
Android application: Android Studio

Android AWS Cognito: unable to resolve host

I am having difficulty getting Cognito registration and login to work for my app in Android Studio using this sample. When I attempt to log in via the simulator, the app works for a few seconds, then displays an error message: "Unable to execute HTTP request: Unable to resolve host 'cognito-idp.us-east-1.amazonaws.com': No address associated with hostname". This same error is the only error that appears in the console. I have seen similar questions and tried solutions such as checking to ensure my app has the permissions android.permission.INTERNET and android.permission.ACCESS_NETWORK_STATE, but the error persists. It also doesn't seem to be a network issue. I have updated to the latest version of the Android SDK as well as the AWS SDK, and the problem persists.
I currently I have a Cognito user pool set up which works properly for login on the iOS version of my app. Following the instructions in the readme for the sample code, I added an app to my existing user pool, and then copied and pasted the newly generated app client ID and app client secret into AppHelper.java for clientId and clientSecret respectively. I also set userPoolId to the ID listed for my user pool under "pool details" in the Cognito conosle, and cognitoRegion to US East, since this is the region of my user pool. I noticed that there was no need for me to set the pool name, as there was in the iOS version, so I'm wondering if that's something I need to do.
Sorry if this counts as a duplicate, but I wanted to post a question with the exact error message I encountered and the steps I took, and I'm wondering if someone has managed to get this specific sample working and what I should do.
The problem has been resolved, but unfortunately I'm not quite sure what fixed it since I didn't change anything in the code. All I did was install an update, so anyone with a similar problem should probably ensure that all SDKs used in the sample are properly updated, along with the simulator. It's also worth noting that I was using a different network than in my previous tests, so it's possible that it was a network issue after all.
I had the same issue.
The issue occurred when I used a VPN with emulator to test my program. The reason was that the internet connection in the emulator was too slow when connecting through a VPN.
This could also happen if your internet connection is not strong enough.
The solution is, use a real android device to test your code, if your internet connection is not good enough.
More info: https://github.com/aws-amplify/aws-sdk-android/issues/567

Google Game Services cloud save STATUS_DEVELOPER_ERROR

I use Google Game Services not in the first time, I have 2 apps using it and doing it ok.
Now I'm working on another app and found that even though it's connected to Google Play Game Services and shows me a user's name it can't use cloud save state feature.
My android app was published and then unpublished, so it is not a draft. Game (in Game Services Tab of Google Play Developer Console) also is published. I have two linked apps with the same package name and different SHA1 footprints: for debug eclipse and release version (as suggested by Google).
I've tried my old app on this emulator (genymotion) and it works and saves state.
I've double checked everything according to
https://developers.google.com/games/services/android/troubleshooting, but it looks that averything is ok.
But when trying to save app state both in release or debug apk I get the same STATUS_DEVELOPER_ERROR and in logcat I see the same message:
[97] a.a: Unexpected response code 403 for
https://www.googleapis.com/appstate/v1/states/3 Error executing
operation: Access Not Configured. The API is not enabled for your
project, or there is a per-IP or per-Referer restriction configured on
your API key and the request does not match these restrictions. Please
use the Google Developers Console to update your configuration.
Of course I've checked Google Developers Console and see that Google+ API, Google Play Game Services, Google Play Game Management and Drive API are on. I've even created a new Game (in Game Services Tab of Google Play Developer Console) and relinked my app to it, the same result: connection ok, yet STATUS_DEVELOPER_ERROR.
I'm trying to compare my new app with the previous, but I use the same IabHelper of Bruno Oliveira. And for my previous game Drive API is turned off, but cloud save works.
What did I forget?

"DATA_RETRIEVAL" error when deployed on GAE

I am using the new iOS SDK and it's associated REST API. Implementing the iOS framework was a charm but when trying to verify the payments using a Java/Google App Engine backend things are less than optimal. All of this is in testing on the sandbox environment.
Right now the Credit Card payment verification is working (using the REST API SDK v0.5.2) when testing locally. However, when I deploy the application to the app engine the call to com.paypal.api.payments.Payment.get(accessToken, paymentId) fails and returns the following error:
Response Code : 500 with response : {"name":"DATA_RETRIEVAL","message":"Error retrieving data","information_link":"https://developer.paypal.com/docs/api/#DATA_RETRIEVAL","debug_id":"b42c7f5c2b97d"}
A couple more debug ids in case they help: 04870b7c20522, 9cc4393ce08b1, 3d3eb3b9109e0.
The information link only contains another error message.
("Service Temporarily Unavailable - The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.")
Does anyone have an idea why this fails on the App Engine? Any help would be appreciated.
PayPal seems to have fixed the problem.

Android License Test Response - Never works

I've been working on an Android App that has already been published to Google Play. For the next update (versionCode = 3) my client wants to include the LVL licensing scheme.
The first thing I did was set up a static test response from the licensing server. I set the test response to LICENSED. After reading this in the documentation:
This License Test Response will be sent to devices using [my email address]
or the Test Accounts listed above for applications you have uploaded to Google Play. >Additionally, this account (but not the Test Accounts) will receive this response for >applications that have not yet been uploaded to Google Play.
I thought, not a problem, since my developer account email is the same as my Google Play account email on my testing devices. So I should receive the test response when debugging the App.
After that, I read through all the other licensing documentation and sample code and integrated it into the App. I used a ServerManagedPolicy with the correct base64 public key and 20 random generated bytes as the salt.
Once everything looked good I uploaded it to the device to test it, but instead of receiving the LICENSED response that I expected, I am always receiving a NOT_LICENSED response. I went back and made sure that:
I was connected to the internet.
I was signed in to my developer account on Google Play.
The LicenseChecker was using the correct public key.
Clearing my Google Play cache.
At first, I thought maybe it had something to do with the caching, so I tried using a StrictPolicy instead. Same response. Since I haven't purchased the App from the store, I'm under the impression that the licensing server is responding normally instead of sending the static test response. Here are some other things I have tried:
Waiting 24 hours and trying again.
Tried building the App with the android debug key, as well as the current distribution key.
Setting up and using a different test user account on Google Play. I made sure to add this email account to the 'Test accounts' section in the developer console.
Uploading the APK to Google Play, but not publishing it.
Incrementing the versionCode from 2 to 3. This is interesting, because instead of responding NOT_LICENSED it returns the 'application error code' ERROR_NOT_MARKET_MANAGED.
This leads me to believe that the license server is always responding normally, instead of sending the static test response I set up to my developer account. I have a feeling it may be because the App is already published, but I cannot risk publishing a debug build just to test wether or not it is working.
Has anyone been in this situation before? Any help is greatly appreciated.
I had the same issue but was able to resolve it. Here are the things I did to fix:
1) on my device, I removed all google accounts except the test account I had configured for. Apparently, play store was still trying to use a non testing account.
2) I had to activate test status for my developer account even though I'm the main developer and only tester.
the version increment thing did not help and honestly was a distraction.....
I've spent hours and even days with the same problem, it is documented here and elsewhere, that pre-published license test is hit and miss, and more miss than hit from what I discovered.
The only way I've found to make it work "more reliably" (but still not totally reliable) is to have a hardware device that is a reset to factory defaults, then set it's PRIMARY google user as the same one as your dev account that has the app uploaded to test with.
The special AVDs are also not very reliable.
I have the same problem when testing using LVL library. I always get the 561 (0x231 NOT_LICENSED) response no matter what I set the License Test Response to in the settings page.
My paid app users don't seem to complain so I'm assuming LVL is working for them.
At first one of my apps had this problem and it went away after 1 day (published Dec 30 2012), now I get valid test response in that app.
However, I still get the 561 (0x231 NOT_LICENSED) response for a newer app (published Jan 31 2013)
So now I just comment out (disable the alert dialog code that pops up for 561) after I publish the APK and continue my development for the next release.
I un-comment (enable the alert dialog code) before I publish again!
I contacted Google Play, they referred me to their developer forums. I posted the same question there but then I can't find my post.
Good to know that I'm not the only one facing this problem.
Not sure I am adding anything new but having similar problems and frustrations at what-should-be-happening vs what-is-happening I'll offer up this which seemed to work: 1) remove all of the users in the Play Console's license testing list of users; 2) whatever device you are testing remove all of the Google accounts; 3) on that same device create a new, unique Google account (e.g., iamalicensetester#gmail.com); 4) add that Google account to the Play Console license testing list of users.
What I think might be happening is that if you have more than one account on a device and one of them is licensed then a non-licensed account of that same device (or other devices) will inherit that characteristic. This idea of mine is just a model (all models are wrong, but some are useful) to (mostly) allow me to get back to the work of testing...and (partially) to have some way to explain this nonsense to myself.
I did try most of the things mentioned above...clearing the cache, the storage, etc. -- you'd think that Google would want a better facility with dashboarding but don't know if that is even on their radar. I mean, revenue, right?

Categories