BillingClient.launchBillingFlow() returns "The item you requested is not available for purchase" on one device only, all Google accounts - in-app-billing

I am developing an app that uses in-app billing and have been testing on three devices: a Pixel 2 running Android 10, a Samsung Galaxy Note 4 running Android 6.0.1 and a Samsung Galaxy Note 8 tablet running Android 4.4.2. I tested first with the Google test product IDs (android.test.purchased, android.test.canceled and android.test.item_unavailable) and everything ran fine; no problems on any of the devices, so I tested using my real product ID. This time, the app ran fine on the Pixel 2 and the Note 4, but on the tablet, I get the above error when calling BillingClient.launchBillingFlow(). This happens when I'm logged on with all my testing accounts and ONLY on the Note 8.
I searched StackOverflow for this issue but found nothing that matched. Anyone experience the same problem using a 4.4.2 device?

Looks like this was an OS issue. After I was able to re-install the app using the opt-in link (that was a separate issue, resolved only today), the problem disappeared.

This issue happened to me as well and the reason is that your subscription was inactive. It needs to be active in order for the launchBillingFlow to work. Confusingly enough, you can query then and get the information from then correctly while inactive. But, even for testing, they need to be activated in order to test the buying process.

Related

Why isn't my Chrome App in kiosk mode automatically updating?

I have a Chrome app that runs on a few dozen devices in auto-boot kiosk mode.
I've pushed several updates to the web store, and while I do see the update on my local Chromebox after a little bit of waiting, I've come to learn that the many devices running it in kiosk mode are on an array of older versions. Some seem to have updated at some point in time, but many have not, and none are on the latest version that's already several days old.
Is this because they are in kiosk mode? I found this question over on the product forums, but it has no answer. Seems like the behavior I'm experiencing, and if so I could see why this is the case. Still, all of the documentation from Google pertaining to apps suggests they should always be auto-updating themselves.
We had this same issue and luckily have a support agreement with Google. After some log searching, we were able to determine that the kiosk app we were deploying was specifying a kiosk required_platform_version, eg.
"kiosk": {
"required_platform_version": "11021.56.0"
},
While our Chrome devices (ASUS Chromebit in this case) were already beyond the required version specified. As Chrome won't downgrade itself, the new version in the Chrome Web Store is deemed ineligible for this device and upgrades are never applied.
To resolve this issue, we posted a new version of our Kiosk app with this value updated to match the currently highest deployed Chrome platform version in our fleet (you could also just remove it - but for long running Kiosk apps it's best practice to lock the Chrome version).
Hope that helps!
You may want to check this thread which states the following:
If these are school managed chromebooks, see this topic.
If it is not managed or if the settings have not been changed in the management console, the chromebook does have to be restarted to finish updating.
https://support.google.com/chromebook/answer/3134673?hl=en
Simply follow the given steps on how to manage kiosk settings.

Developing a google play app with HTC Desire

I've been a Java developer for 6 years, but this is my first foray into Android, and it's not going well.
I've set up a simple example app which uses google maps api v2 - it's just a single page: I copied it from one of the many helpful sites on this topic.
I then discovered that I can't run it in an emulator since it uses the google maps api v2, which requires google play. So I bought a device (HTC Desire).
Now the device doesn't show up in the eclipse run configuration. It shows up with ./adb devices just fine.
I thought maybe this was because the device is on Android 2.2, and my app has minimum OS level of 4.2. So I tried to upgrade, but I couldn't work out how. In the software / update section on the phone it just says 'no updates available'. Can this be right?
Ok so assuming I can't upgrade the OS (in which case the phone is now useless), I modified the project so the minSdkVersion is now 8. But now my project won't build!
Errors include 'No resource identifier found for attribute 'showAsAction' in package 'android'' - what does that even mean?
And to cap it all the device is now doing the 'buzzing 7 times instead of booting' thing. I can access some menu called HBOOT, and selecting RECOVERY just reboots the machine, which fails.
So now I've spent £50 and several hours, and I haven't even got as far as hello world - just a bricked phone.
What am I doing wrong? Can Android dev really be this hard?

Icenium no provisioning profile found

I’ve recently downloaded an installed Icenium Graphite (free for 30 days) on my Windows 7, 64 bit. I’ve created a new project (Cross-Platform Device Application jQueryMobile).
My iPhone is plugged in and I can see my device in the Devices panel at the bottom of the IDE.
When I Run-->On device, I obtain an error which basically tells me that I don’t have any provisions.
After several searches, articles and youtube videos, I still can’t get my head around this.
I’ve logged into the apple developer center. It appears I need to enroll and pay 99$ a year as an individual.
If my plan is to eventually publish my application to the Apple Store than I understand the 99$/year fee but if my goal is to simply test locally on my iPhone how can I do this without enrolling?
Is it even possible or the 99$/year is a must regardless if I only plan on testing locally?
If anyone could help me shed some light on this that would be great!
Sincerely
PS: My iPhone is not jailbroken so I can’t use the approaches found in some articles I’ve read.
You can use Icenium Ion to run your app on your iPhone without the need of provision. You can get it from here - https://itunes.apple.com/en/app/icenium-ion/id527547398?mt=8 Also, you don't need to jailbreak your phone to use the app.
What you need to do is the following:
Run Graphite, open your project, connect your device, verify that Graphite recognizes it and fire up Ion on your mobile device. Your app should be loaded automatically. Also, check if in Graphite Ion LiveSync is enabled for your device.
You can check docs.icenium.com for even more details.
Hope that helps.

Remotely debug iOS app

I am developing an iOS (5.0+) app, which works very fine on 6 different devices in our company.
When we send the build to the customer, they report they have tested it on 5 different devices and the app is always crashing right after launch.
I have integrated TestFlight and Flurry SDKs to track usage and problems.
The strange thing is that no crashes are reported from both TestFlight and Flurry.
I have adviced the customer to remove the provisioning profiles and try to install everything from scratch, which did not produce different results.
The app is in the App Store, approved from the first try.
It is even stranger that the customer reports crashing when installing a TestFlight build and installing from the App Store.
Is the app going to be approved in the App Store if it crashes right after launch?
Any ideas on how to remotely debug the app or how to proceed in this case?
Thanks and happy holidays!
One option is to ensure your logging and get the crash logs. This Apple documentation shows how to get the logs both with and without Xcode available:
http://developer.apple.com/library/ios/#qa/qa1747/_index.html
After you get the logs, here's documentation on how to read and analyze:
http://developer.apple.com/library/ios/#technotes/tn2151/_index.html
The problem has been resolved by adding both German and English localization to the project settings and having 2 storyboards for each language. Big up #RoboticCat!

"This game is not recognized by game center." iPhone Development

There are already a couple of questions on this but I followed their steps to solve it and it doesn't seem to work for me. Here's what I have done:
1. I double checked to have the bundle identifier in the xcode project to be the exact same as the provisioning profile found on the provisioning portal (it also says Game Center is enabled). No wildcards.
2. I have logged in using a sandboxed account to gamecenter (made 2 accounts incase one wasn't sandbox). I did see the word "sandbox" with some numbers/letters on the top left while signing up for an account, so I'm 100% sure I have a sandboxed account. Tried 2 different sandbox accounts. Tried on 2 different devices (ipad/iphone). Also tried on the iPhone simulator.
3. I have deleted my app from my iPhone many times and tried it again.
I'm running 4.3/xcode 4 on iPhone + iPad.
I'm still receiving the message. Any help would be appreciated. Thanks!
From memory (I battled with this recently)…
In addition to what you've already done, you have to setup your app (even if it's using a fake bundle ID) in ITC (iTunes Connect). This means you need to put in a name, category, a screenshot and a bunch of other stuff (you can just put dummy data in there for testing purposes). Then you need to create a version of your app, then enable Game Center on that version.
There might have been a few other important steps that I've forgotten, but in between the voodoo dancing and making sacrifices to the gods of iOS etc., that's all I can recall.
Deleting the old app from your device can sometimes help too. Looks like it stores some data with an app and will try to login to actual Game Center instead of Sandbox Mode.
This solved my problem when trying to add Game Center in an update.
This is how I solved the problem. I opened the Settings App, then select Game Center. At the bottom under Developer, turn on "Sandbox".
I had a similar problem. Make sure you have the exact same app version in xcode and ITC. For example, if you have 1.0 in xcode and 1 in ITC it will not work. The version is a string not a float, so 1.0 != 1.
My situation is , It showed "this game is not recognized by game center",and my ipad is jail-broken. so I uninstall Appsync 5.0+ in Cydia--> logout game center---> reinstall app, it's ok now
In my case, almost everything people had suggested was in already correct for my app.
My bundle IDs were correct, my iTunes Connect record was set up, etc. However, the version number of the build that had been uploaded to iTunes Connect was not recent (and didn't match the version I was building onto the test device).
After uploading a newer build to iTunes Connect with a matching version number, it appeared to fix the problem.
I'm not guaranteeing it won't break in the future (because the authentication seems to be very flaky and has worked previously, even with the old version record), but for now it seems to have solved the problem for me.
I learned from somewhere that if your machine(iphone or ipad) is jail-broken, it will assume you use the real game center without the sandbox one.
So, if your devices are jail-broken, just restore it, and give it a try.
Hope this will help you.