Android end-to-end demonstration

Overview

The purpose of this demonstration is to experience an end-to-end flow:

  1. A sample application that is pre-bundled with the PMF client SDK is registered and downloaded from the PMF Operations Console.
  2. A new or provided adapter is deployed to the PMF Operations Console.
  3. The application logic is changed to make a resource request.

End result:

  • Successfully pinging the PMF.
  • Successfully retrieving data using an adapter.

Prerequisites:

  • Android Studio
  • Optional. PMF CLI (download)
  • Optional. Stand-alone PMF (download)

1. Starting the PMF

Make sure you have created a Persistent Mobile Foundation instance, or
If using the PMF Developer Kit, navigate to the server’s folder and run the command: ./run.sh in Mac and Linux or run.cmd in Windows.

2. Creating an application

In a browser window, open the PMF Operations Console by loading the URL: http://your-server-host:server-port/mfpconsole. If running locally, use: http://localhost:9080/mfpconsole. The username/password are admin/admin.

  1. Click the New button next to Applications
    • Select the Android platform
    • Enter com.sample.android as the application identifier
    • Enter 1.0 as the version value
    • Click on Register application

    Register an application

  2. Click on the Get Starter Code tile and select to download the Android sample application.

    Download sample application

3. Editing application logic

  1. Open the Android Studio project and import the project.

  2. From the Project sidebar menu, select the app → java → com.ibm.mfpstarterandroid → ServerConnectActivity.java file and:

  • Add the following imports:

    import java.net.URI;
    import java.net.URISyntaxException;
    import android.util.Log;
    
  • Paste the following code snippet, replacing the call to WLAuthorizationManager.getInstance().obtainAccessToken:

    WLAuthorizationManager.getInstance().obtainAccessToken("", new WLAccessTokenListener() {
                  @Override
                  public void onSuccess(AccessToken token) {
                      System.out.println("Received the following access token value: " + token);
                      runOnUiThread(new Runnable() {
                          @Override
                          public void run() {
                              titleLabel.setText("Yay!");
                              connectionStatusLabel.setText("Connected to PMF");
                          }
                      });
    
                      URI adapterPath = null;
                      try {
                          adapterPath = new URI("/adapters/javaAdapter/resource/greet");
                      } catch (URISyntaxException e) {
                          e.printStackTrace();
                      }
    
                      WLResourceRequest request = new WLResourceRequest(adapterPath, WLResourceRequest.GET);
    
                      request.setQueryParameter("name","world");
                      request.send(new WLResponseListener() {
                          @Override
                          public void onSuccess(WLResponse wlResponse) {
                              // Will print "Hello world" in LogCat.
                              Log.i("Mobile Foundation Quick Start", "Success: " + wlResponse.getResponseText());
                          }
    
                          @Override
                          public void onFailure(WLFailResponse wlFailResponse) {
                              Log.i("Mobile Foundation Quick Start", "Failure: " + wlFailResponse.getErrorMsg());
                          }
                      });
                  }
    
                  @Override
                  public void onFailure(WLFailResponse wlFailResponse) {
                      System.out.println("Did not receive an access token from server: " + wlFailResponse.getErrorMsg());
                      runOnUiThread(new Runnable() {
                          @Override
                          public void run() {
                              titleLabel.setText("Bummer...");
                              connectionStatusLabel.setText("Failed to connect to PMF");
                          }
                      });
                  }
              });
    

4. Deploy an adapter

Download this prepared adapter artifact and deploy it from the PMF Operations Console using the Actions → Deploy adapter action.

Alternatively, click the New button next to Adapters.

  1. Select the Actions → Download sample option. Download the “Hello World” Java adapter sample.

    If Maven and PMF CLI are not installed, follow the on-screen Set up your development environment instructions.

  2. From a Command-line window, navigate to the adapter’s Maven project root folder and run the command:

    pmfdev adapter build
    
  3. When the build finishes, deploy it from the PMF Operations Console using the Actions → Deploy adapter action. The adapter can be found in the [adapter]/target folder.

    Deploy an adapter

sample app

5. Testing the application

  1. In Android Studio, from the Project sidebar menu, select the app → src → main →assets → mfpclient.properties file and edit the protocol, host and port properties with the correct values for your PMF.
    • If using a local PMF, the values are typically http, localhost and 9080.
    • If using a remote PMF (on IBM Cloud), the values are typically https, your-server-address and 443.
    • If using a Kubernetes cluster on IBM Cloud Private and if the deployment is of type NodePort, the value of the port would typically be the NodePort exposed by the service in Kubernetes cluster.

    Alternatively, if you have installed the PMF CLI, then navigate to the project root folder and run the command pmfdev app register. If a remote PMF is used, run the command pmfdev server add to add the server, followed by for example: pmfdev app register myIBMCloudServer.

  2. Click on the Run App button.


Results

  • Clicking the Ping PMF button will display Connected to PMF.
  • If the application was able to connect to the PMF, a resource request call using the deployed Java adapter will take place.

The adapter response is then printed in Android Studio’s LogCat view.

Image of application that successfully called a resource from the PMF

Next steps

Learn more on using adapters in applications, and how to integrate additional services such as Push Notifications, using the PMF security framework and more:

Last modified on