Wednesday 9 August 2017

How to see realtime log of an android application published in playstore

It's quite natural that many issues may arise from a published app in the playstore and it may be difficult to predict the bug without seeing the log. Sometimes we deliver the app to the client which is published in the playstore but the client may say the app is closed unexpectedly while using it. The client may not be able to give needful info to find out the bug. But it's our responsibility to fix the bug in the next release (version).

This is not only the requirement of an android app, it's a common requirement in all mobile apps development!

What is the possible way to get the realtime log of an android app which is published in the playstore??

There is a web app called realtimelogging which can show the realtime log from any application. We can deploy the same copy of this app in our own server.

Sometimes we may want to debug or collect log of android app that's not in Playstore because we may share .apk file before publishing it in to playstore. This realtimelogging app is suitable in all scenarios.

How it works :- It takes input log from the device using a service url and pushes that data to the browser page. So we have to post the log data to the service url of this app. We can also view logs from specific device/user.

So if your client is checking the app with a specific logged in user then we can specifically see the log of that user. It helps us to understand what he does and if there is any exception occurred in the app.

Sometimes some exceptions/errors occur in a specific android version, with this app we can see the logs from specific device.
We can open multiple browser tabs to monitor different user/device logs at the same time.
Read more in its website about this realtimelogging app. One thing to care about this app while using is to use a very strong terminalId because we are viewing the log using this terminalIdterminalId acts as just like an api key. Another common best practice is use an async call to the service which also keeps the order of execution so that it will not affect the performance of the app.

Here is the complete url to refer about this app: https://webfirmframework.binpress.com/product/realtime-logging-web-app-for-android-ios-mobiles-any-devices-applications/4731

The question may vary depending on the mobile platform we are using, eg:-
How to see realtime log of an ios app published in appstore.

This realtimelogging app is not only useful in the mobile app development but also other application development scenarios where the log needs to be seen without logging in to the server console.


Monday 31 July 2017

Can I turn my android mobile as a web application server

Run your android mobile as a web application server


Why do I need to do this?

If you have a hotspot network with your mobile and you want the mobile to act as a web application server to serve some personal application, eg: a customer management application which is used by your staffs, the application may contain producing token number for the consulting customer and updating the consultation status of the application etc..


How to achieve this?

With the help of some opensource libraries TooTallNate Java Websocket and wffwebTooTallNate Java Websocket is a websocket server implementation for android and wffweb is a light weight web application framework in java. As wffweb is very light weight it take very minor load, memory and cpu which is even suitable for a mobile device to run.

How can I start developing, any sample codes to get started?

Request us to write more details..

Websocket Server Implementation In Android

Websocket Server Implementation In Android

Sunday 30 July 2017

Cross platform mobile application development framework

Cross platform mobile application development framework

Before we get started, let us understand what a cross platform (AKA hybrid) application framework is. A cross-platform application framework lets you build app for multiple platforms like ios, android etc.. from a single source code. In a normal development cases, we have to different programming languages for different platforms, eg:- if we are building an app for apple then we have to write program in x-code or swift. If we are building app for android we have to use Java, Kotlin or any other supported languages. This makes the development cost higher as we have to use different programmes for different platforms. But a cross platform framework will let you use the same source code to build app for different platforms like ios, android etc..

Some cross platform framework providers provide cloud based development services.

Are cross platform application development is suitable for all scenarios?


Absolutely not, as we know all hardware devices may be different in their operation. A cross platform application may be limited to access the hardware devices in the application. You will be limited to use the features provided by the framework. Even if you are able to extend the features of the framework, there will be cases where you will not be able to achieve some functionalities.

But there will not be any restriction if we are developing an app in the platform supported language, eg for android Kotlin or Java and for apple xcode or swift.


What are the other disadvantages of a cross platform app framework.


 The performance might be less compare to the native app. It may vary framework to framework.


When is cross platform application development is suitable?


If you have a requirement which will not need any access to the hardware device in the mobile and all features can be achieved using the service, eg:-
shopping cart app.
(Some frameworks do provide access to hardware but limited)


What are most famous cross platform application framework.

  1. Corona SDK
  2. Xamarin
  3. Appcelerator Titanium
  4. TheAppBuilder
  5. PhoneGap
  6. NativeScript
  7. Ionic
  8. Sencha Touch
  9. React Native


Friday 21 September 2012

How to make a request to a web application with proxy settings set up

Here is the code





import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.apache.commons.httpclient.Credentials;
import org.apache.commons.httpclient.HostConfiguration;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.UsernamePasswordCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;
/**
 *
 * @author visruth
 */
public class HttpClientWithProxySettings {

    private static final HttpClient httpClient = new HttpClient();

    static {
        String proxyAddress = "192.168.1.100";
        int proxyPort = 3125;
        String userName = "visruth";
        String password = "visruth";
        setProxyServer(proxyAddress, proxyPort, userName, password);
/*comment the static block if you do not use proxy*/
    }

    public static void setProxyServer(String proxyAddress, int proxyPort, String userName, String password) {
        System.out.println("proxy server");
        final String PROXY_HOST = proxyAddress;
        final int PROXY_PORT = proxyPort;
        HostConfiguration hostConfig = httpClient.getHostConfiguration();
        hostConfig.setProxy(PROXY_HOST, PROXY_PORT);
        Credentials credentials = new UsernamePasswordCredentials(userName, password);
        AuthScope authScope = new AuthScope(PROXY_HOST, PROXY_PORT);
        httpClient.getState().setProxyCredentials(authScope, credentials);
    }

    public static synchronized String getResponse(String url, Properties parameters) {
        /*
        GetMethod to make get method request, PostMethod to make post method request type,
         */
        HttpMethod httpMethod = new GetMethod(url);
        String response = "";
        try {
            if (parameters != null) {
                NameValuePair[] nameValuePairs = new NameValuePair[parameters.size()];
                Set keySet = parameters.keySet();
                Iterator iterator = keySet.iterator();
                for (int i = 0; iterator.hasNext(); i++) {
                    String key = iterator.next().toString();
                    String value = parameters.getProperty(key);
                    NameValuePair nameValuePair = new NameValuePair(key, value);
                    nameValuePairs[i] = nameValuePair;
                }
                httpMethod.setQueryString(nameValuePairs);
            }

            httpClient.executeMethod(httpMethod);
            if (httpMethod.getStatusCode() == HttpStatus.SC_OK) {
                response = httpMethod.getResponseBodyAsString();
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            httpMethod.releaseConnection();
        }

        return response;
    }


    public static void main(String[] args) {

        Properties map = new Properties();
        map.setProperty("fistName", "sony");
        map.setProperty("lastName", "sony");
        System.out.println(map.size());
        String response = getResponse("http://192.168.1.102:8084/WebApp/forandroid/getDetails", map);
/* pass null instead of map if you don't want to pass get/post parameters*/
        System.out.println(response);
    }
}

Download API (jar library)
If you want any java code which you could not find in the internet, please request us as a comment, we will provide you in our next post....
Usage of JSON