Please could i have some advice from those who have been building apps for longer than myself. After 18 months of developing 2 quite complex CN1 apps, available on IOS and Android stores, I get starkly different customer feedback.
On both stores i get similar download levels (<10 a day).
From Google Play i receive nearly zero revenue and 1 and 2 star reviews, citing that the app of full of glitches, 'does not work' and freezes - but the same time reviews say they really like the app if it worked. I do not receive any examples of information to guide me on where to fix. It runs fine in my simulator (even slow network mode) and on my own Android device. Hence i'm not sure the best way forward, which is the advice i am after.
On IOS i receive mixed reviews, generally 2-4 stars but i get some revenue.
FYI, the app uses Rest web services to send data to/from my cloud database, so network is likely a cause, although i cannot reproduce. I can imagine customers clicking a button many times on the trot if the network is slow resulting in the transaction or screen showing multiple times. But just a guess. The cloud server is running fine with no spike in CPU or memory. I have tried to keep physical JSON network traffic loads small so that should be fine.
Would you agree that the next steps are to:
Verify the network traffic numbers, using the network monitor in the simulator and get these down if poss.
Check that buttons disable themselves when pressed to avoid double tap.
Write to a local storage log of timings when a user moves between screens, and pass that to my database on app exit, for my analysis on slow navigation.
Are there any other tips and tricks please?
Thanks in advance.
I would suggest using something like the rating widget to track user satisfaction. When a user provides a low rating ask him to email you personally so you can discuss the problems.
I would also suggest crash protection. Most of these cases occur due to on device exceptions that are hard to pinpoint and generally happen more on Android. Crash protection will send out emails with such details. Also check out the ANR/Crashes in Google Play's developer console to see if there's something you can improve.
Also you can add the play store link, I'll take a look and see if something pops out for me.
Related
Seeking any kind of advice/input from this community.
Background Story:
I came across an cracked Amazon Prime Video Android App on divyanet.com (It claims it's the cracked version of the Original Amazon Prime Video Android App. Same movie selections and everything minus paying for the subscription)
I installed it and realized it was a different app in the way that it wasn't the actual Amazon Prime cracked.
To confirm my suspicion. I set up an Environment to capture the cracked app's network traffic.
I ran Genymotion (Android Simulator) and Burp Suite on the same laptop. I proxied the Android instance traffic to that of the laptop's so Burp Suite could capture it.
What I saw was a good learning experience. This cracked app was sending Get requests all over the place. (To many free movies/shows domains and some domains are even being marked as malicious)
Examples:
tovanillitechan.com (Https://malwaretips.com/blogs/remove-tovanillitechan-com/)
tzegilo.com (https://hybrid-analysis.com/sample/6d9faaedd7dd72dc8e0da476e0af4b08d6ca24bf60b498d20e070f90f1b45af1/62aa234f35008f214f1869ac)
unphionetor.com (https://any.run/report/7974be8113970f143fd17339a5c349d499a05ccf99c940b34979f38d283bb1b3/99008e10-24bd-4cb1-aa59-ab8d5baaf0d0)
My questions are: (See links for HTTP Get and response details)
enter code hereRequest Header
enter code hereResponse Header-1
enter code hereResponse Header-2
A: How is the site owner benefitting from tricking users downloading this supposedly cracked app?
(While streaming the movies, there isn't even ads interrupting the movies)
B: I haven't noticed my phone acting weird like slowness or random ads pop up. How can I check to see if anything malicious installed? What are the typical reason for this cracked app calling out to these malicious domains?
Thank you for your help!
Because the app is a trojan and he now has complete control of your device. Some of those malicious requests are likely to command and control servers. Please tell me you didn't use your actual phone, because if so he has access to anything your app had access to, including your email, online banking, etc.
Don't try to figure out what he may have changed. You don't have the skillset for it. Factory reset the device immediately. Even that isn't a 100% sure fix, if you have another device I'd switch to that. And stop downloading cracks, it's a horrible idea. You're taking something from skilled hackers and reverse engineers and running it on your device, and just hoping that someone who has no problem with cracking an app would somehow draw the line at putting a keylogger in there. Hint: they won't.
First off - YES I KNOW that there are an incredible amount of "tutorials" on the internet as well as SO questions on the topic that this question is on as well. PLEASE understand.
I have an app, and am trying to add functionality to transfer data between two Android devices. The data is small, merely xy coordinates for a button-clicking game to make it multiplayer. I decided that Bluetooth is my best bet. HOWEVER, after spending about 3 hours reading the official docs, I am still stuck. All I need is to: 1. Connect to a chosen device 2. Send the data. Its mostly about "Bluetooth Servers" and stuff, but I need a quick connection, and the code to send the data. Everything I've seen requires a HUGE amount of code, and doesn't really solve my problem. If the amount of code is required, is there a library that can help me? NOTE: I have already seen these, this, and this. Generally, the code provided doesn't work, is too cluttered/unreadable, outdated, or not easily implementable in my app without a major re-config pain. I'm looking for a solution that is Up To Date and Working.
(I can also be convinced to use WiFi if thats a better path to go down :\ ).
I also need the code to be compatible between Android devices down to API 21.
Scenario:
User_1 opens game and clicks "Multiplayer Mode". Selects "Start as Host". Now a game is running, but not started.
User_2 opens game and clicks "Multiplayer Mode". Selects "Join Device" In the background, the app is connecting the devices together.
A default Android Dialog appears, and they select RANDOM_GAME_NAME device, and clicks "Join".
User_1 is informed of them joining the game.
Game starts. Both players have a "board" where they try to tap buttons. User_1 taps button_1. Game sends signal to User_2 device that button_1 has been tapped and is now untappable. And vice versa until all the buttons are tapped.
Only two players can play at a time.
a colleague of mine is working on a legacy ReactNative app. There is quite a lot of code both in JavaScript and Java land, the latter being related to HERE Maps SDK.
Two of our clients experience multiple crashes every day and we cannot figure out why as we have no error reports.
Bugsnag was installed early last year (circa jan 2020) and we have nothing on there to help us. Nothing to be found in Google Console either. App just stops.
To help us debug we've added a logging system which sends debug info to our backend via dedicated API calls.
It roughly consists of logging "start of function A", "end of function A" etc so we know what the app is doing. We don't always enable it as it tends to make the app even more unstable.
In parallel to that we managed to get an idea of when the app crashes via login events that are sent by Firebase Auth when user re-launches the app.
Looking at our logs around the time of crash doesn't help us as 1) they look the same as when it all works and 2) we haven't covered all method calls as there are way too many (in JS and Java).
Our users run the app on a Samsung Galaxy Active Tab 2 mounted in the cabin of a tractor. Some use a Galaxy Active Tab 3 and also have the issue.
We have run through various theories :
Could it be too hot in the cabin so Android shuts down? No, tablet is always on according to clients.
Could it be related to a change in voltage? When WE try to plug and unplug everything continues to work fine.
Could it be Android that decides the app is consuming too much battery or CPU (GPS is needed for our app) so it shuts it down? We've let our app in the foreground for hours with no problem.
We logged in with customers' credentials (they are aware) and could not replicate the issue.
Customers interest in helping us find the issue is slowly fading away so we can't keep on asking them to install a patched version every week.
First there was just one client but now we have at least 3 more users complaining about mysterious crashes.
We're a bit stomped as to what to do.
Has anyone any idea of an ultimate catch all library? Or a syslog on the tablet where we could get more info?
Thanks in advance for your help!
After much testing my colleagues managed to easily reproduce the error and found the root cause: poor memory management in one method in Java land.
Said method was responsible for changing markers orientation on the map but it duplicated markers when their orientation changed. It resulted in a high memory consumption and when it reached a certain point Android would just kill all running apps.
My colleague fixed the leak and we're good! Onto the next bug now. :)
The below reasoning is based on hardware failure. If your software hasn't drastically changed (the app or the operating system), then this is a likely scenario:
The Tab 2 was released in 2012, so we're talking about a device that is up to 9 years old. If the users all use the same hardware, and the software hasn't been changed for a while, it could be some kind of hardware failure. It could be related to the vibrations of the tractor, moisture over time, or just because they used the tablet more intensively than you use yours. There could be something (semi-)loose or the memory (SSD or RAM) could start becoming faulty.
It can be a software error too of course, but it's unlikely if you haven't updated in a long time - assuming the tablets haven't been updated either.
Could you perhaps swap your tablet with one of a customer. Preferrably a customer that has the issue most often. Then observe if the issue is resolved.
This way, you'll be able figure out if it is related to the tablet (being broken) or the environment (tractor) it is being used in.
If the issue persists after a tablet swap, it's either the environment or the software, but you'd have ruled out the hardware.
If the issue is resolved, you'll know for sure it's the hardware at fault.
I am developing hybrid app using Ionic and I do performance testing with one low end budget android device. That phone is my performance quality assurance. Once I upload to the app store, I can see hundreds type of model of smartphone is using my app.
So, I am curious and really want to know how many phone up there that are using my app has a device that is stronger performance than my low end budget device and how many of them were slower. This is something really important for me to further develop and enhance the app. If majority, let say more than 90% of it were faster than my testing device, that mean I am safe to put in more feature into the app. If many devices where below my testing device, that's mean maybe I need to put more concern on performance on future release.
Therefore, is there anywhere I can have those data? Having my own performance test inside my app to do collection? Any API to connect to existing database to have the info of phone performance based on model?
To be honest: I don't know if there's any existing work you could reuse for that purpose.
But as measuring performance highly depends on your app and the expected bottle necks, I guess that you need to have your own testing methods and that you need to collect your own data.
One more hint: you could use the cordova-plugin-device to get information from the phone and OS your app is installed on.
#user1995781,
I understand your reasoning, however, you are making a fundamental mistake. You assume your Interface is good, when in fact users might reject is. As Jef Raskin used to say, 'Test and test again'. Jef was the original designer of the Apple MacIntosh.
The point being, you need to test the user experience too.
For your request, you want to Google: mobile analytics
Flurry, now owned by Google
Localytics
Amplitude
to name a few
Adobe, IBM and MS all own or have one product in this category. - Best of Luck
I'm having trouble with an app I published that sends user notifications.
The notifications are called from a background service that checks for a boolean that gets saved to SharedPreferences when the user selects to enable notifications or not.
However, I've had some users on the Galaxy S5s say that they can't turn them off (I test with nexus devs and have beta testers on m8, etc). How do I address this issue?
What is the strategy for solving problems that arise only for specific devices?
IMO, Android kinda sucks in that regard. There is absolutely no way to guarantee that if one piece of code that works on one device works on another one. Since Android is open source, manufacturers usually modify the firmware to make it kinda customized. However, they sometimes change things that will affect performance of a single function.
It is even worse! Your code might work on S4 with Android JellyBean, but not work with the same device Android Kitkat. Anyways, no - there is no way to debug without the actual device. However, you can log different events in your code and use an analytic service (like Google Analytics) and send the data to your database to study and figure out the problem. This is the method that I typically use in such cases.
If the problem is that the app crashes on some device. It is even easier. Users need to press on the "send crash data" button - so you can study the log on your developer account.