Mobile A/B testing - android

I'm fresh out of college, working on developing Android apps for quite sometime. My boss has asked me to develop A/B testing for mobile native apps. I've been exploring the various A/B testing tools. I really like Apptimize implementation.. By inserting a small piece of code, any one can make live changes using a visual WYSIWYG editor without even updating the app or do any coding.
Here is a scenario,
I have three buttons in my app.. Once Apptimize SDK is installed in the app, it loads the app in the desktop web browser. I can change the color/text or make any other changes using WYSIWYG editor. Once the changes are done, it goes live instantly in the app as well.
I would like to clarify the following,
How the UI of the app is loaded in the Desktop web browser? Do we need to parse the xml of Android to load the UI? or is there any protocol available?
I guess that once the changes are done in Desktop it will be saved in server.. And when the app loads, the changes are fetched from the server through JSON format. But how the changes are applied in the app?
Since I have only one year experience in Android, it would be great if someone could throw light on this. Any tutorials to get this done would be really helpful.. or any other pointers?
P.S: I had a look at Switchboard but i'm not sure if I understood it clearly.

lead Android engineer over here at Taplytics.
I've answered A/B testing questions before similar to this.
How the UI of the app is loaded in the Desktop web browser? Do we need to parse the xml of Android to load the UI? or is there any protocol available?
No XML needed! There's actually quite a few ways to do this. The first, the easiest, is just send a screenshot up over a socket or any http request, like this.
The trick here would be to keep track of the X/Y coordinates of each view and send that up with the screenshot. So if you click a view on the webpage, the view at that location is known!
I guess that once the changes are done in Desktop it will be saved in server.. And when the app loads, the changes are fetched from the server through JSON format. But how the changes are applied in the app?
This is pretty much asking 'how is an entire A/B testing library made', which is the basis of the entire company of Taplytics, Apptimize, and some of Mixpanel.
In which case, I've answered roughly how its all done here. If you have the View object, changing them is pretty straightforward!

Related

How to manage pictures and icons when developing mobile app for both Android and iPhone

I'm planning to create a BLE (Bluetooth Low Energy) mobile app for both iOS and Android devices. (iOS 11 or above / Android 6 or above)
I and my friend used both Java and Swift.
Although we searched about Xamarin or PhoneGap App,
we wanted to use our previous working environment (Xcode/Android Studio) as possible, not spending time on learning new tools.
So we want to work on a BLE app and we want to make it work on both Android and iOS. Currently, we are making the same thing using Swift and Java.
Since the UI part overlaps for both platform, we wish to ask these questions, please.
If we use Swift and Java separately, we noticed that when a picture is changed, we have to update both to each separate code.
For example, we wanted to change the round button to a square button shape. Currently, we upload the same picture to the GitHub repository respectively. So we felt something is not efficient and we want to ask is there a better way to change both sides of the app.
Solutions which require prices, like adding Amazon Web Service S3, is also welcomed.
We are creating the same UI for both platforms using Swift and Java. Since the UI, button, etc (the interface parts) overlaps for both app, is there a way to code the same UI so both of us don't have to spend time for working the same thing?
Maybe something like Xamarin could be one way, but I want to hear various advice, please.
Why not just put the images in a common folder in source control that both builds can access it? That's the common way of doing it. Using S3 (or any other server) will work if you want to download it at runtime, but since you tried checking it into source control it seems like you want it part of the build.
As for the UI- native Android and iOS have completely different UIs and ways of working with it. Really unless you want to go with an html app, you're going to write two different UIs. The UIs are the least sharable part of a mobile app. At least for business logic you have a few options (worst case you can always use C, which runs on both).

Importing Artificial Neural Networks in Android App

This might sound a bit of a stupid question, but I'm doing a project where I'm using an ANN to diagnose Sepsis in patients using various vital signs as inputs. The aim is to then develop an Android app that allows a user to put in the inputs and will return a risk score (% likelihood of sepsis, etc)
I'm constructing my ANN using Matlab (using their pattern recognition network wizard), and I'm using MIT App Inventor 2 to build the App itself.
Where I'm struggling, is understanding how one would actually put the ANN into the app. Can anyone explain how this works to me, or even just point me in some vague direction?
There is a matlab-compatible programming language called Octave, and it works on Android as well. You might want to take a look at it, it's called addi.
Matlab/Octave is great for scientific prototyping. Once you enter the realm of mobile applications, the best option is to re-write the libraries in Java. It could be painful but with a proper design you will be able to scale your app without depending in Matlab/Octave hacks.
If this absolutely positively has to be present on Android, on the phone itself, the straightforward way to do this is to write the software in Java and then write the Android GUI around it.
But does the software absolutely need to be on the phone? Maybe. But if not, why not make the Android part a client that communicates with a more powerful and flexible remote server? The server can implement in whatever language it likes.

Android app in HTML

I've looked at this doc: http://developer.android.com/guide/webapps/webview.html
It seems it might be attractive strategy to use HTML/Javascript to get:
result faster (I can use my browser to create a prototype very quickly, just updating my page in the browser, and not waiting for emulator to be update my changes)
avoid to to learn Android API too deep (but use what I know HTML/CSS/JS instead)
reuse my code, putting it to iOS, BlackBerry (not only Android)
The only question I have.. Is whether someone already did it for real? Because tutorials that I've found - just show how to print 'Hello world!' message in simple HTML.
But what would be more interesting to get is 'how it works with embedded database' in android,
OR better say, as an example what I mean:
How to handle JS' "onClick" to get some data stored to db?
UPDATE:
Yeah.. there are a lot of PRODUCTS. But what if I need just a storage support (need to put and read data from db). no need anything sophisticated like camera support. What I really want to avoid is:
waiting for Emulator updated
write simple and easy components and layout in HTML to get instant result (it seems more natural for me, even though I'm Java Dev.. but it's lame to wait for result building and waiting when working with UI)
I'm looking for someone's existing experience to avoid addition complexity and time gaps between builds/tries while working with UI.
Look into Phonegap to convert HTML, CSS, and JS code into a native phone app for android or iOS. Very useful as it puts a web wrapper around the web code to run it natively on your phone. This should solve storage issues as well, lots of documentation around for phonegap, be sure to check it out!
I just released http://www.protocoder.org under MIT license, give it a try! Its meant to basically do what you mention in the first point (prototype fast), and on the second avoid to learn the Android API to deeply.
Its still a young project but I hope it will grow really fast :)

Is it useful using WebView whole layout in native Android app?

I am currently developing a native android app. My app has a lot of activities. I want to develop native android app. But in some case, I want to use a webview where the entire layout is just a webview. Not linear or relative or another layout, just a webview. All of the images and other things running in HTML. All of screen will run in HTML5.
So, I can partially transfer my app into iphone app or other platforms. This is the benefit of this way to me.
But I don't know. Is this way better? What will the performance be? What is the disadvantages of converting to an HTML5 app?
Can you explain?
There is a very good presentation about this very topic.
Performance: You are adding an additional layer in between, A webkit engine cannot always match native (and sometimes hardware accelerated) rendering performance.
Disadvantages: One is that the API use is limited, you can bind a page's JavaScript to Native code, but not all functionality is available.Though you might want to have a look at capabilities of Cordova project. Another is that emulating complex widgets via JavaScript will slow down the page.
Portability: Indeed is a great advantage, that's why PhoneGap and Cordova are popular. Though many like Facebook App etc have switched to native App for better performance.
The approach you require actually depends on your requirements. This may be my personal rant but IMHO: a markup can be only twisted so far, it can't out-perform industrial grade GUI programming setups as of yet.
Cons WebView
Can't use full performance of device, Since web view form an extra layer.
Web view can't listen all user event.
You can't fully share or save data from your web view to app.
Take more time to load. Other we get all things in a simple API and can be rendered.
Changing a simple fields in page need to load full page again.
Online required, can't extend offline features.
Orientation changes and full screen make difficulties.
Pros of using Web view
One page for both android and IOS.
I think the main advantage is the ability to make changes without the need for each user to update the app on his device, because all the pages are on your server.
No wait for app store approval for updation.
Some Techniques
Native elements TOGETHER with WebView. I think it will be much better, as there are a lot of functions that can't be done with WebView only. The combination of the two is much more recommended.
Rendering from locally, Create an assets directory for HTML files – Android internally maps it to file:///android_asset/ (note singular asset). So you can feed your web view form locally even if you are offline.
I think -by using this way- your app quality will be weak and app will be hard to use because the webview object not having a lot of tools that you can make it be compatible with android. e.g you can't share or save data from your webview to app. whatever that reference on your app what need and what dosen't need, by the way i tried to develop an app with html but it was bad.

Develop client-server app for android ... where do i start?

First, let me say that I know nothing. I am reasonably intelligent, and I can learn .... but what I need to know is what exactly it is that I need to learn. Consider me a hobbyist that just got started. I have a degree in math so logic makes sense to me, but it was all abstract math so I never even used Matlab once in school.
I want to develop an application for android. I want this application to take input (text and camera images) from the user, and store that input along with certain meta-data (i.e. time of input, geo-location of device when inputted). I also want that data to be transferred to a server (I have complete admin access to a server, but haven't learned much about it yet either) and stored there in a manner which can be accessed by a desktop or web application which I will also need to develop. The android device may not always have an internet connection at the time of input (but will be taken to a wi-fi hotspot for uploading when completed), and after uploading the data to the server I will have no further need for the data on the device.
I have done a bit of research, and discovered the following gaps in my knowledge, and remedied them in the following ways:
a) I'm going to need to know how to program in android - I have worked through these tutorials at developer.android.com, purchased and partly read this book(1), and just purchased this book(2).
b) I believe I am going to need to know something about JSON - I have just purchased this book(3), after reading just a little bit about JSON on the web.
c) I will need to learn what I need to with the server to prepare it for the data - No idea where to start.
d) I will need to decide how to access the data, and learn how to develop whatever it is. - No idea where to start.
I am not able to post multiple links, so I have moved all the books down here ...
1 google.com/search?q=isbn+9780321741233
2 google.com/search?q=isbn+9780321749673
3 google.com/search?q=isbn+9780470526910
My question(s):
If this was your project, how would you go about doing this? What languages will I have to learn? Can you recommend any books, online tutorials, etc. for each of those languages in the way that they would apply to my project?
Thank you for taking the time to read my query, and thank you for any help you may provide.
Book: Pro Android 2. I have it, I've read it, and it shows you how to do just about everything. I bought it for the sole purpose of developing a client/server application in Android, and I completed the app in two weeks.

Categories

Resources