I am working on a native Point of Sale application for Android. The application is being written using Xamarin.
Most of the functionality for the app will reside in a single web page application. The native app will mostly be a wrapper around this website.
In my Point of Sale app, when the user goes to close a ticket, I want to launch the Square POS app to handle credit card entry.
I've followed this documentation on the Square website (https://developer.squareup.com/docs/pos-api/web-technical-reference#mobile-web-on-android) which tells you how to build the Intent to launch the Square POS app.
When I build my native app in Debug mode and debug it, the Intent works correctly. I click a button in my app, the Intent object is built, the Square app loads, I can swipe/key in a credit card, the response calls back to my native app, everything works.
If I build my native app in Release mode and upload it to my physical Android device and then run the app, the Intent also works correctly. The Square app loads, I can process cards, etc.
If I publish my app to the Google Play store, download it onto the same Android device, and run the app, the Intent does not work. When I click the button in my app and build the Intent and run it, I get this error code from Square: "com.squareup.pos.ERROR_INVALID_REQUEST". According to Square's website, this error code means: "The information provided in this transaction request is invalid (e.g., a required field is missing or malformed)."
I don't understand how debugging the app on my physical Android device works correctly, building the app in Release mode and uploading it to my Android device works correctly, but when publishing the app to the app store and downloading and running it does not work correctly.
I've tried uninstalling the app from my device then downloading it from the Play Store, I've tried clearing the cache/data from the Play Store app, nothing seems to work.
I found the answer. In the Square Developers dashboard, you specify the fingerprint of the certificate used to sign your Android app. I had gone in and provided that fingerprint, but in the latest release of our native app to the Google Play store, someone had turned on the "Re-sign app with a certificate hosted on Google's servers" option. So the .apk was getting re-signed with a new certificate that had a different fingerprint.
I added that additional fingerprint to the Square Developers dashboard and now the process works.
Related
For testing, a project was created in Firebase and two applications (for iOS and Android) were published. Testers have also been added, who have successfully received invitations to participate in testing by email.
When clicking on the link in the invitation, a window opens (first screenshot), which successfully displays some information about the application under test. Immediately, the user is offered to download the App Tester application or download the application being tested directly. When you click on both buttons, the same error appears (second screenshots).
ps What can it be connected with? I am currently in Russia, but I tried downloading using a VPN - the same result.
pss the application is written in Flutter, it was also initialized as a Flutter application in Firebase
Yes, the download does not start due to the fact that I am geographically located in Russia, which is sad. The download has started from the VPN of another country.
ps Apparently the VPN, under which the application did not load, also sent requests through Russia
I have an android app that has a login and OTP features.
I have generated the release version of the app and we were able to use it when we download it from external link.
However, when we download the same app from PlayStore, we are unable to pass the OTP Screen although we receive the otp.
Whenever we add the otp number, it just remain in the same page and we can't proceed.
My point is, why we have different behavior when we download the app from the PlayStore?
What can we do to debug or troubleshoot the app in this case?
There won't be any difference between the app that you submitted to the play console and the release app you generated if it is the same android package.
If you really want to check, you could use the testing track to test your app.
More information here https://developer.android.com/distribute/best-practices/launch/test-tracks
I uploaded an app to internal testing track to the dev console and added a user.
When I go to the app page through the link, it shows (Internal Beta). But the app version I added isn't there. Even though I got a notification that it had been processed and should be live.
So the test user is succesful, and the app was added. But even though it says I am a beta user it doesn't show any app?
Right so I followed the test link to store, but it turns out you can't do that on your phone as it will just get you to the store app which only shows the live version. You need to follow the link on a desktop and send it to your phone from there...
From what I read on SO, it seems that I want the impossible (?)
I have a kiosk-like app that is supposed to run 24/24, 7/7, 365/365. This makes it hard/impossible to update the app. As far as I know, Google Play will not start the update (even if Autoupdate is set for my app) while my app is running.
I read across SO and several forums an found a lot of NO's and CON's. My current answer is that is not possible without rooting the device or without some system certificates and so on.
But still, I have the following scenario:
I created a google account myGoogleAccount#gmail.com
On my device I add this account and install my application from Google Play store.
On my desktop machine I log into GPlay with the same account and I go to my application and I see that my app is Installed. If I click on the Installed button I can see my device.
I publish a new version of the app, when the app becomes available, from my application's page open on desktop I can send a command to update the app.
I get the prompt to accept the terms bla-bla, and once I accept it, the app is automatically updated even if it is currently running.
Basically this is the behavior I am interested in. My question is: can I run this scenario from my device [invoking some GPlay api's] given the fact that I can provide the google account credentials to the app, so that no user intervention is required to update the app and to accept whatever unchanged permissions?
Recently I've been trying to get my Adobe Air AS3 Android game to work with Google Play Game Services.
I'm using the Milkman Native Extension and Flashdevelop.
I made my own sign in button, and when I press it the standard "Sign in with your account" window with all my accounts appears. The first time I sign in with an account it even gives me the standard options to share my game status to my Google+ circles. Then, when I do try to log in, the service shows the standard spinning progress wheel, then disappears, the "Signed in as PLAYER" box doesn't show up, and I'm not logged in. The ANE tells me that it's an unknown_error_code.
Things I've noticed:
It doesn't let me see a list of achievements or leaderboards either.
After the first time I log in it just tries
to log me in again indefinitely.
The "Apps using google+ data" shows it as a "3rd party app" and not the actual title of the app. EDIT: It now displays it as the correct app for some reason. Still doesn't sign me in though...
I'm pretty sure this isn't a coding problem.
Things I've tried:
Matching the SHA1 key with the SHA1 key from my p12 key.
Logging into different accounts.
Making my accounts tester accounts.
Using non tester accounts.
Making new Game Service pages
Making new application pages
Changing my app I.D. (com.blank.mygame)
Clearing the "Apps using google+ data"
Making the Version Number of the game higher than the most recent test account
Making new Google+ accounts
Syncing my app to the services page.
Desyncing my app from the services page.
Making new OAuth 2.0 client I.D.s.
Publishing the game services.
Any suggestions?
Now I can answer my question officially:
I fixed it.
Apparently if you go to the API console and change the Oauth from there the game services doesn't detect it. I originally put in the wrong SHA1 and fixed it through the API and not the google services developer console.
http://www.youtube.com/watch?v=nkJS_W-VC9I (it's problem #6 which is really n)
I was having the same problem, and I solved it by changing the App/Package ID at the Google Developer Console from:
com.developer.appname
to:
air.com.developer.appname
I had simliar issue - the app was asking for permition, but it triggered onSignInFailed event.
Tried several things, the problem was with runtime enviroment - everything works correctly when I include it to application. (I was using separate AIR runtime enviroment to decrease the time of publishing the app)