Test cases and workflow for in-app purchase of android app

 IAP Testing

In this blog, I would like to share android in-app product types, workflow of in-app purchases, and the set up of the test releases by a developer. These 3 things are essential for a tester to start in-app purchase testing.

In-App Product Types

The android in-app billing supports the managed in-app products and subscriptions.

Managed product: Once you purchase a product, that item cannot be purchased again until you consume the item, by sending consumption to Google play.

Subscriptions: This product type offers sell features, content, and services to users from the app with recurring weekly or monthly or annual billing.

In-app purchase workflow and settings for releasing apps to test:

The Google Play Console provides several tools to test the in-app billing. There are three stages of app deployment in android in-app purchase:

  1. Alpha
  2. Beta
  3. Production

Alpha and Beta Release (Sandbox account):

Publish app directly to Google Play’s alpha and beta release channels for testing purpose. The app will be available only to the tester who can download and install the app to the device from Play Store.

To release a test app, first, the developer should create and add test-user Gmail accounts to ‘Tester List’ group in Alpha/Beta release section.

Both the alpha/beta release is same; the only difference is adding the number of tester accounts.

  • Alpha test – we can create a small group of testers.
  • Beta test – we can create up to 50 lists per track and can add up to 2000 users in each track.

Testing in-app purchase (In-app billing – Subscription type)

To test in-app purchase, we need to publish the app to an Alpha or Beta channel in Google Play. You can choose any user to be a test account and any user of test account can make test purchases with any available payment methods, without any actual charges to their accounts.

First, the developer has to upload and publish in-app products in play console before publishing the APK itself. Then, add user account ID (Gmail ID) to License testing section in the developer console and we can add up to 400 test-user accounts to test in-app purchase products.

Steps to add: Login to developer console and Go to Settings –> Accounts details then add the addresses to License Testing field.

Note: The address should belong to Google account. It will not accept other accounts to add as license tester.

Once you add the users as license tester accounts and saved the changes, within 15 minutes those users can make a test purchase of your in-app products. After publishing the app, the tester needs to opt-in the alpha/beta release of the app using the provided opt-in URL before making test purchases. In this case, the developer will provide an opt-in link to the test users.

The opt-in URL will generate once the developer has created and added the license test users in the license section. Before that, the developer will send an invitation to users to become a part of tester group and then copy and send generated “opt-in URL” to all test-user accounts.

Once test-users get authorized test access, they can make a purchase without any actual charges. After all the processes have completed, the app will be available in tester’s Play Store who were all added as the Alpha/Beta tester.

Test purchase is auto-renewable on daily basis for any actual duration. The app will automatically renew every day until you cancel the purchase.

Important note: Licensed account must be on the user’s android device. If the device has more than one account, the purchase will be made with the account that downloaded the app. If none of the accounts have downloaded the app, the purchase is made with the first account. Users can confirm the account that is making a purchase by expanding the purchase dialog.

Steps to start an in-app purchase (Subscription) test:

  1. The user will receive an invitation to become an Alpha/Beta tester. Click on ‘Become a Tester’ button in the mail to be a part of the tester group.
  2. Later, the tester will get detailed mail along with opt-in URL link of test application from Google Play Console.
  3. Click on ‘opt-in URL.’ It will redirect to your Play Store app and shows test app with all the information.
  4. You can download and install the app to your phone from Play Store using licensed tester account.
  5. To add payment methods for purchasing the app, select Slider Menu in Google play store –> choose Account option –> Select Payment methods –>  then add your valid international Credit/Debit Card or Net banking detail along with your name and address.
  6. Click on Save in the popup window.
  7. The Payment method will be successfully saved. If you did not add your Payment method, it will ask the card details while doing the purchase.
  8. Once the payment details are successfully added, an amount of ₹50.00 will be debited from your account for Debit/Credit card verification but after few minutes, the amount will be credit back to your account. It will be debited while adding the card detail only. It will not debit while subscribing to the app (If you are a licensed test-user).
  9. Next, you can start testing subscription function in your app
  10. The following message will be displayed on Google popup when you make a payment. “This is test subscription. It will recur daily. You will not be charged.”
  11. You will get a receipt for your purchase order from Google Play Store on successful purchase.
  12. The subscription will auto-renew and send email every day until you unsubscribe the purchase.

Test Cases:

  1. Pricing info should be displayed based on region-specific currency and needs to verify whether the mentioned price has tax included or excluded.
  2. Span time of billing period and description about your subscription should be shown as per requirement.
  3. To verify, the app will deduct given price while purchasing the subscription.
  4. Services or Features should be accessible after successful purchase.
  5. Check whether the purchase auto-renews in the specified duration because it should be continuously renewing the purchase until you cancel the purchase.
  6. Check whether the subscription is expired once the specific subscription period is over. The subscription will expire only if the user canceled auto-renewal or subscription (Auto-renewable product).
  7. Check whether the app is expired on time and make sure that the users should not access purchasable content or features (Non-auto renewable product).
  8. Subscription features should be automatically restored while re-install/updating the app. If it is a Non-consumable product, the app should have restore button for restoring the purchases.
  9. Use the same purchase id to multiple devices and verify whether the app has subscribed state.
  10. Use different accounts (ID doesn’t have a subscription) to Google Play and install the app and verify that the app has Un-subscribed state.
  11. Subscription features should continue to users after canceling the auto-renewal or subscription and until it expires.
  12. Check the status of in-app purchase when users purchase while there is no network on the device. ‘No internet connection’ should be shown when the user tries to purchase a product and while accessing purchasable features.
  13. Once the network connection comes back, check the status of previously attempted purchase at that time of network failure.
  14. The app should validate the purchases on the update
  15. Check the subscribe function of product that was already purchased. It should not allow purchase again.
  16. Verify that the users get purchase receipt from Google play until they cancel the subscription.

 

FacebookTwitterGoogle+Share
Behold! Beyond Biomag 3D iOS App is Here

It’s been a week since we launched Beyond Biomag 3D, a reference app for biomagnetism practitioners and clients to locate the Anatomical Biomagnetism pairs in the human body using 3D male and female models.

With the help of this app, users can self-heal his/her health concerns using a pair of magnets of medium intensity. It assists users to understand various scan points and their corresponding pairs in the body, where the user has to place the magnets to neutralize the pH level. The app is designed with 3D model representation of male and female bodies, scan guide briefing about scan points and their respective therapies, and a dictionary with anatomical biomagnetism pairs.

Amazing Features

3D Models

The app is developed using Unity 3D engine, which allows you to rotate the 3D models in 360 degrees to locate scan points and corresponding pairs

Biomag 3D app

Reliability in Self Healing

With proximate spotting of scan points on the 3D model and easy navigation to a specific body section, our Beyond Biomag 3D app makes self-healing easier and effective.

Biomag 3D App

Dictionary

The built-in dictionary that allows you to search for anatomical biomagnetism pairs based on health concerns and associated microbiome.


Dictionary edited  Dictionary2 Edited

Gender Switch

Easy toggling between male & female models. The app functionalities are similar in both the models.

Biomag 3D

Language

The application interface currently supports switch between English and Spanish language.

blog4

An iOS user can start using the Beyond Biomag 3D app today by downloading it for free from the App Store. The free version has 25 Biomagnetism Pairs. To explore the app with 250+ biomagnetism pairs and 1000+ health concerns, you can subscribe to our annual plan for $99.99 only (taxes applicable).

Download the app today and enjoy the amazing benefits of Beyond Biomag 3D.

Apple App Store

6 Scenarios for Testing Beacon Integrated Application
Beacon Testing

What is Beacon?

Beacons are small Bluetooth-powered radio transmitters that can trigger real-world actions by relaying contextual information to nearby smart devices.

Beacon Identifiers

The parameters UUID, Major, and Minor are the Beacons identifiers. These parameters together makeup iBeacon’s unique identifier and plays a key role in beacon deployment.

  • UUID: The purpose of the UUID is to distinguish beacons in your network from all other beacons in networks outside your control.
  • Major: The major field identifies and distinguishes a group, for example, all beacons in on a certain floor or room in your venue could be assigned a unique major value.
  • Minor: The minor field identifies and distinguishes an individual beacon, for example, distinguishing individual beacons within a group of beacons assigned a major value.

Beacon Application Developed by Vmoksha

Vmoksha developed a beacon integrated iOS application that assists users to discover the nearest meeting room in their office on preferred date and time.

How does it work exactly?

Beacons were fixed in the meeting rooms. We have assigned a single UUID to the group. It will notify users the nearest available meeting rooms first just by referencing the UUID. The application developed scans for beacons and displays the availability of rooms with date and time. The user should choose and book the convenient room and can invite people from the contact list to the meeting.

Android iBeacon

Pre-requisites

  • App installation on the iOS device
  • Beacons to place/fix in the meeting room (Used Kontakt beacons)
  • Internet connectivity should be on
  • Bluetooth (BLE) has to be activated in the mobile device

Testing the Beacon Application

For testing the application, we used two beacons to book the meeting room either by date and time or availability of particular meeting room.

Search by date and time: The app allows a user to set the time slot of a meeting for a minimum of 15min with no maximum limit. When we set the preferred date and time in the app, the app displays a list of rooms with the nearest room first, followed by the succeeded one.

Search by availability: The app allows users to search for availability of a particular meeting room and enables them to book that room when it is unoccupied.

To test the beacon application, we followed the following steps:

  1. Installed the app on multiple iOS devices (iPhone 6, 6+, iPad)
  2. Attached  beacons  to different rooms
  3. Followed various test scenarios

We have followed several scenarios while testing the application. Here, I have mentioned the major 6 test scenarios that we followed during the testing.

Scenario 1: Book a room based on date and time and send invite

Case 1: Device connected to Wi-Fi and Bluetooth

  • Select the date and time
  • The app displays a list of rooms with the nearest room first
  • Select the room and invite people to attend meeting

Result: App should allow booking of a room and inviting people

Case 2: While booking the room, disconnect mobile device from the Wi-Fi

Result: App should display the error message ‘please check the network connectivity’

Case 3: While searching the room, disconnect the Bluetooth connectivity

Result: The app should display an error message as we need Wi-Fi to get the status of the meeting rooms and availability. BLE is required to navigate and identify the meeting room using Beacons.

Scenario 2: View rooms based on available timings of the specific room and send invite

  • Connect device to Wi-Fi and Bluetooth
  • Select the ‘search by available meeting room’
  • The app displays the available timings of the specific room with the nearest room first
  • Select a room and invite people to attend meeting

Result: App should allow booking of a room and inviting people

Scenario 3:  Book a room that was already booked

  • Connect the device to Wi-Fi and Bluetooth
  • Book the ‘room 1’ on May 10th, 2017 @10:00 A.M
  • Again try to book the same room for the same date and time

Result: In the available room(s) list, it should not display the ‘room 1’

Scenario 4: Book a room for the past /present/future date and time

Case1: Book a room for the past date and time

Result: App should not allow the booking of a room for the past date and time

Case 2: Book a room for present date and time

Result:  App should allow the booking for present date and time

Case 3: Book a room for future date and time

Result: App should allow the booking for future date and time

Scenario 5: Book a room while mobile is in airplane mode

  • Connect the device to airplane mode
  • Make sure the device is connected to Bluetooth and Wi-Fi
  • Book a room either by Search by date and time or Search by available room options

Result: App should allow the booking of a room

Scenario 6: Book a room when mobile battery is draining (charge less than 20%)

Result: App should allow the booking of a room

Challenges

  1. At times, the nearest available room was showing next in the availability list.
  2. Beacons not working:
    • Battery is not properly placed
    • Battery might be discharged

3. User calendar is not mapped to the app to see whether he or she is available to send the invite.

Conclusion

Beacon is a low cost, low powered and low energy Bluetooth device that uses low-frequency for transmitting weak signals to other Bluetooth-enabled devices. When people pass through the beacon integrated meeting room the app will detect the nearby available meeting room.

How to Test Native App Performance using Apache JMeter?

In my previous blog, I have elucidated how to test web application’s performance using JMeter. Here, I would like to share how to test mobile app’s performance in JMeter.

JMeter records mobile application requests on HTTP(S) Script Recorder and it has features to prepare and run our mobile application performance test scripts. All we have to do is to configure JMeter and Mobile device. In JMeter, we can test both iOS and Android native applications.

Steps to Configure JMeter:

  1. Go to apache-jmeter-3.1/bin folder and start the jmeter.bat (Batch) file.
  2. Right click on “Test Plan” > Add > Threads User(s) > Thread Group.
  3. Right click on “Thread Group” > Add > Logic Controller > Recording Controller.
  4. Right click on “Thread Group” > Add > Listeners > View Results in Tree.
  5. Add HTTP(s) Script Recorder to Workbench by selecting Workbench > Add > Non-Test Elements > HTTP(s) Script Recorder option.
  6. Add Port value as 8080 and click “START” button in script recorder. The JMeter proxy will be started on localhost.

Note: If you are testing from behind a firewall/proxy server, you may need to run the jmeter.bat file from a command line mode to use following parameters (If you are working under proxy network in office, use this method.)

Go to jmeter/bin directory and enter this:

jmeter.bat -H <Hostname or ip address> -P <Server port> -N <Non proxy hosts> -u <Username for proxy – If required> -a <Password for proxy – if required>

Example: jmeter.bat -H my.proxy.server -P 9090  -u username -a password -N localhost

Next, we need to configure the mobile device as per the following steps.

Before starting the configuration on your device, you should install “ApacheJmeterTemporaryRootCA.crt” certificate in your mobile/tab device.

Steps to install the certificate:

1. Go to jmeter/bin directory and find the ApacheJmeterTemporaryRootCA.crt file. (If you cannot find the certificate from bin directory, just go to your HTTP(S) script recorder screen in Jmeter and click ‘Start’ button. It will generate new certificate on your bin directory automatically).

2. Attach that file and send an email to yourself.

3. Download from your mail and then install on your device.

After installing successfully, you will see the notification “Network may be mounted” on android device. Here you can verify whether the certificate has been installed. For iOS device, it will show you the “Profile Installed” pop-up and you can see the ‘Verified’ sign. Tap ‘Done’ at the top right corner to complete the installation.

Note: Ensure to check whether the certificate has been expired or not. Certificate will be expired within 7 days from the date of generated. If it has expired, simply re-generate again and use it.

iOS Device Proxy Configuration:

  1. Go to Settings > Wi-Fi option. (Note: Network should be same for both Mobile and Laptop/Desktop).
  2. Click on the Connected network.
  3. Select “Manual” option from HTTP Proxy.
  4. Set ‘Server value as system IP address and Port value to 8080 as per JMeter setup.
  5. Now start the application on the device and its each request will be recorded in JMeter.

 Android Jmeter

Android Device Proxy Configuration:

#1. Go to Settings > Wi-Fi option.

#2. Press and hold on connected network and Click ‘Modify Network’ option.

#3. This will open advanced settings from where we can modify Proxy.

#4. Change the Proxy to Manual.

Apache JMeter

#5. Set Hostname value as system IP address and Port value to 8080 as per JMeter setup.

Android PAC

#6. Click on ‘Save’.

#7. Now start the application on the device and its each request will be recorded in JMeter.

#8. Before running the application, make sure that HTTP(S) script recorder was started in JMeter.

#9. Once the application is started, the actions of the script will be recorded under “Recording Controller.”

#10. Once actions are done in the application, stop the script recording by clicking ‘Stop’ button in HTTP(S) script recorder screen.

#11. Now, expand the “Recording Controller” in JMeter. You can view all the Recorded scripts of whatever actions are done in the applications.

#12. Finally, click the ‘Play’ button. It will run recorded scripts as per your Threads setup.

#13. Click on “View Results in Tree”. Here you will see the result of your script.

 

Solutions for issues while testing the mobile application:

Here are the solutions for the issues that we have noticed while doing the load test in JMeter.

Issue 1

The application wasn’t getting loaded.

Solution

The issue is caused because our system was enabled with the firewall protection in security software. This is restricting network connection when setup with the proxy. We have disabled the firewall protection in antivirus settings.

Issue 2

Internet was not working with Proxy on the mobile device when we configure the mobile device and JMeter.

Solution

The reason might be that the system IP address is not configured with JMeter properties which mean the current IP address is not added to the JMeter properties file. We have added remote host IP address to property file as per the following steps.

  1. Open the browser and type IP address and Port number that is mentioned in JMeter to check whether it was configured. If browser shows Connect, then it is working fine otherwise if it is continuously loading, then it was not configured. Then we have to follow the below steps:
  2. Open apache-jmeter folder from the local drive and go to the bin folder.
  3. Open “jmeter (.properties)” file and find “Remote hosts and RMI configuration” section on this file.
  4. Under this section, add the system IP to remote hosts with comma delimited and save the file.
Android Runtime Permissions

From Android M, Google has changed the way of permissions that applications handle. Earlier, we simply mention permissions in AndroidManifest.xml, but from Android 6.0 version, we need to check every time for permission related task. Applications need to ask the permission at runtime while it is running and also have to provide enough contexts on why the permissions are required. All the permissions, though we have to declare in manifest whenever application want to access the APIs that need the runtime permission, apps has to check whether that permission has been granted or to request the required permission using support library.

Types of Permissions:

  1. Normal permission
  2. Dangerous permission

The Normal permissions do not directly affect the user’s privacy. If application lists a normal permission in its manifest, then these permissions will be automatically granted by the system upon installation. Some of the most common normal permissions are given below.

Check and change data connection: Include network state, Wi-Fi State, Bluetooth, Internet, etc.

Example:

Android permissions

The Dangerous permissions are the permissions which give application access to the user’s private data or affect the system/other apps. If you list a dangerous permission in manifest then the user has to explicitly give permission to your application.

Android permissions

Advantage of Runtime Permissions:

In Android 6.0, applications provide transparency to users.  Users have to grant permissions to applications while the application is running rather than during installation and it asks to grant the permission only when some specific function is being used within an app. At that point, users have to decide whether or not to grant their permission. But in the earlier versions of Android 6.0, a user has to grant all the app permissions before installing from the Play Store and if he doesn’t allow the permission then the system doesn’t install the application at all. As a result, many malicious apps are able to access user private data after granting the permission at installation time, which leads to a major security breach. But in Marshmallow, the user can allow or deny individual permission and the application can continue run with limited efficiencies even if the user denies a permission request. In addition, users now have the option to revoke individual app permissions after he has granted them, but in the earlier versions to Marshmallow, the user can’t revoke individual app permissions once he has granted them.

Android permissions

Permission Groups:

Different types of permissions are separated into groups based on which data or resource it requests access for. Once permission from a group has been granted then other permissions within that group do not need to be granted again. For example, permission group for SMS can send or receive the SMS. Those are two different permissions but the user only needs to allow one.

Android 6.0 Marshmallow has nine main groups of permissions:

Calendar: Read and/or write to the calendar.

Camera: Give the application the ability to access the camera.

Location: Access fine or coarse location.

Microphone: The ability to record audio.

Phone: Includes phone state, the ability to make calls, read and write to the call log and voicemail.

Sensor: The ability to use various sensors in the device, like a gyroscope.

SMS: Similar to how the phone is handled including sending and receiving texts. MMS and cell broadcasts.

Storage: Read and write to device’s external storage.

 

Enable/Disable the Runtime Permissions Manually for App

The user can deny the permissions at any time by going to the application’s Settings screen. There are some steps to enable/disable the app permissions given below.

Step1: Open your device’s Settings app.

Step2: Tap apps and find an app which you want to work with. Select it.

Step3: Tap applications permissions on the App Info screen.

Step4: You will see the list of permissions the app requests, tap on the switch to make it ON/OFF.

Runtime permissions

Permission Workflow

Android Marshmallow

Requesting Permissions at Runtime:

In Android 6.0, users allow permissions to applications while it is running, not during installation. This approach streamlines the application install process since the user does not require grant permissions when they install or update the application. It also gives the user control over the application’s functionality. Since the permissions are requested individually, the user can allow some permission and deny others permissions. For example, user can grant camera permission but can deny location permission and the application may function seamlessly.

How to Check for Runtime Permissions:

If your application requires runtime permission, you must check whether you have that permission enabled every time to perform an operation. The user is always free to revoke the permission.

  • Check the Target SDK version: If the device running is former to Android 6.0, there is no need to call new runtime permission workflows.     

Android Marshmallow

  • Check if permission granted
  1. Check whether required permission is granted. Call the ContextCompat.checkSelfPermission (Context, String) method, Context current context and String Permission.
  2. If the application has the permission, the method returns PackageManager.PERMISSION_GRANTED and the application can proceed with the operation.
  3. If the application does not have the permission, the method returns Package Manager.PERMISSION_DENIED and the application have to explicitly ask the user for permission.

runtime permissions

  • Handle Never Ask Again

ShouldShowRequestPermissionRationale (String permission): This method can be called to determine if the user denied this permission previously or not. If this method returns true, then it’s perfect time to tell the user exactly why the permission is needed before requesting it again.

If the user denies the permission request in the past and chose the Never ask again option in the permission request system dialog, this method will return false. Next time we call requestPermissions, this dialog will not appear for this kind of permission anymore. Instead, it just does nothing.

runtime permissions

The result of rational dialog will be shown when this permission is requested for the first time and also be shown if the user has ever marked that permission as Never ask again. For the next case, onRequestPermissionsResult() will be called with PERMISSION_DENIED without any permission grant dialog.

  • Request for Permission:

If the application doesn’t have the permission which requires, the application must call requestPermissions(String [ ] permissions, int requestCode) methods to ask the appropriate permissions. Pass permission array and request code as parameters.

Example: The following code checks if the application has permission to use the location service and requests the permission if necessary.

Android permissions

Android permission

  • Handle the permissions request response:

If the user has granted or denied the permission request, we have to handle response and execute the functionality according to response. This can be achieved by overriding the OnRequestPermissionsResult() in the Activity where the permission was requested. This method returns the result code for granted or denied permission.

permission Request Response

Note: Suppose, the user wants to use some APIs that need runtime permission that has not allowed yet. The function will immediately throw a SecurityException, which will cause to the application crashing.

Android permissions

permission Request

Conclusion:

Runtime Permission is a must in Android Marshmallow. The user will be happier allowing permissions because they are much more likely to install your app without a wall of permissions at the installation. The aim of this new model is to give the user full control over application’s permissions. By using this, users will soon have a better understanding of exactly why app need permission to access any features, which means less Play Store complaints and hopefully a higher download rate.

 

Material Design for Android

Introduction

In 2014, Google developed a new visual design language called Material Design for Android Lollipop and higher versions. The visual specifics in material design are amusing, and the material objects have x, y and z dimensions, which allows you to create an incredible 3D world. Material design is not about how to use dazzling colors, best images, and the elevation of the object; it is about how we create the amazing experience to users with the positive brand reality.

Google has proposed some rules and regulations while adding the material design to application to improvise its standards. Instead of using a palette selection tool that pulls colors to the content of an app, using of material design makes the Android application’s graphic layout more simplified and standard format. To be noted, the material design is not only being used for rectangular or tablet screen; it should also be used for circular watch screen, etc. So if we create a grid, then it precepts all the spacing and should match to all the types of screens, which is a must for apps that are identified everywhere.

Android Material Design

Overall to say, material design is straightforward, clear and brilliant. Because of these dazzling features, it has become an imperative for a broad number of gadgets than any other UI in history.

Goals of Material Design

  • To design the application UI like a magical paper. Let’s say, something that appears like real, appreciable objects.
  • Animations have been pulled to make the experience more lively by safeguarding the maximum amount of content is always visible.
  • With Material Design, Google also determined to robotize the experience for users.
  • Mobile rules are fundamental but touch, voice, mouse, and keyboard are all excellent input methods.

The materials take energy from the users, from their fingers, from their mouse click, their touch and use it to transform and animate.

In material design, software elements are treated as real things. For example, take paper and ink. Every pixel drawn in an application is similar to a dot of ink on a piece of paper. Assume that paper is plain and doesn’t have any color whereas the ink can be of any color. So the content color of a paper depends on the color of the ink. Likewise in Android application, it can be a menu, button or image.

And also the paper can be of any size. It might fill the whole screen, or it might even shrink to small square or round shape. So the ink will not have any restrictions. It will be throughout the paper. It just has to fit inside the paper to be visible. The papers can change its shape, split, move, join and re-size. Likewise, every application made in material design will have all these characteristics.

Principles of Material Design

1.  Material is the metaphor

A material metaphor is a bring together theory of a rationalized space and a system of motion. A metaphor is a figure of speech that specifies flashy effect to one thing by observing another thing. It is open to imagination and magic.

Material Design Principles

2. Surfaces are spontaneous and natural

Surfaces and edges provide visual hints that are familiarized in our knowledge of reality. The use of ordinary material attributes conveys to a primal part of our brain and advice us to quickly understand its need.

Material Design Surfaces

3. Dimensionality supports interaction

The basics of light, surface, and movement are keys to transfer how objects cooperate. Sensible lighting shows bond, divides space, and demonstrate moving parts.

Material Design Dimensionality

4.  One flexible design

A single underlying design system establishes interactions and space. Each device follows a different view of the same fundamental system. Each view is made custom-fit to the size and interaction appropriate for that device. Colors, iconography, hierarchy, and spatial relationships stand constantly.

Material Design Flexible Design

5.  Content is bold, graphic, and wilful

Bold content provides grouping, meaning, and focus. Cautious color choices, edge-to-edge imagery, and intentional white space create captivation and clarity.

Material Design

6.  Color, surface, and iconography highlights actions

User action is all about the significance of experience design. Color in material design is inspired by bold complexion, deep shadows, and brilliant highlights. The whole design is reconstructed by the change of points in the immediate actions.

Android Material Design Color

7.  Users introduce alteration/change

Alterations in the UI extract their energy from user actions. Motion that forces from touch respects and emphasizes the user as the best mover. It means that the widgets or material takes the energy from users’ fingers during the mouse click or on touch and that energy is used to animate to show it as reality.

Android Design User Alteration

8.  Animation is choreographed on a common step

All action takes place in one surrounding. When objects are restructured and transformed, the user will be given with the experience without collapsing the continuity of it.

Android Material Design Animation

9.  Motion provides meaning

Motion is meaningful and convenient. It helps to focus attention and preserves continuity. The following elements assists in material design for apps of Android version 5.0 (Lollipop) or higher.

Android Material Design Motion

Themes

The material theme is defined as,

@android:style/Theme.Material (dark version)

@android:style/Theme.Material.Light (light version)

@android:style/Theme.Material.Light.DarkActionBar

Android Material Design ThemesAndroid Material Design

 

To use the material theme in your apps, customize the color palette as shown below,

<resources>
<!-- inherit from the material theme -->
<style name="AppTheme" parent="android:Theme.Material">
<!-- Main theme colors -->
<!-- your app branding color for the app bar -->
<item name="android:colorPrimary">@color/primary</item>
<!-- darker variant for the status bar and contextual app bars -->
<item name="android:colorPrimaryDark">@color/primary_dark</item>
<!-- theme UI controls like checkboxes and text fields -->
<item name="android:colorAccent">@color/accent</item>
</style>
</resources>

The following example describes how to add material design to a button

styles.xml

<resources>
<!-- Base application theme. -->
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
<!-- Customize your theme here. -->
<style name="MyButton" parent="Theme.AppCompat.Light">
<item name="colorControlHighlight">@color/calbutton_focus</item>
<item name="colorButtonNormal">@color/background_color</item>
</style>
</resources>

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height=" match_parent ">

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:theme="@style/MyButton"
android:layout_gravity="center"
android:text="Click"
android:textAllCaps="true"
android:textColor="@color/white"/>

</LinearLayout>

Cards and Lists

Cards and Lists are the two new widgets in Android with material design styles and animation. To create cards and Lists, RecyclerView can be used, which is introduced from Android version 5.0 (Lollipop). It is an adoption of ListView, which supports various layout types and contributes performance improvements. Part of data can be shown inside the card with a constant look over apps in CardView.

An example shown below demonstrates how to add a CardView in your layout.

 

build.gradle

dependencies {
// CardView
compile 'com.android.support:cardview-v7:23.3.+'
}

activity_card.xml

<android.support.v7.widget.CardView
android:id="@+id/card_view"
android:layout_width="200dp"
android:layout_height="200dp"
card_view:cardCornerRadius="3dp">
...
</android.support.v7.widget.CardView>

 

To use RecyclerView widget in your layout, necessary attribute is shown below,

build.gradle

dependencies {
// RecyclerView
compile 'com.android.support:recyclerview-v7:23.1.1
}

activity_main.xml

<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clipToPadding="false"
android:scrollbars="vertical" />

Android Material Design Cards and Lists

Floating Action Button

Another interesting widget introduced in material design is floating action button.  This button floats on UI in a circular shape with an action attached to it. By default, its behavior is to animate on the screen as an expanding piece of material.

We can also provide shadows and elevation to the buttons. The distance between surfaces and the depth of its shadow signifies elevation. To set the elevation of a view, use the android:elevation attribute in your layouts. The bounds of a view’s background drawable determine the default shape of its shadow.

In addition to the X and Y properties, views in Android material design now have a Z property. This new property serves as the elevation of a view, which concludes the size of the shadow i.e., a view with greater Z values launches bigger shadows.

< android.support.design.widget.FloatingActionButton
android:id=”@+id/my_floatbutton”
android:layout_width=”wrap_content”
android:layout_height=”wrap_content”
android: layout_gravity="top|end”
android: src="@android:drawable/ic_add”
android:background=”@color/white”
android:elevation="5dp" />

14

build.gradle

dependencies{
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
}

activity_main.xml

<android.support.design.widget.FloatingActionButton
android:id="@+id/fab"
android: layout_width="wrap_content"
android: layout_height="wrap_content"
android: layout_gravity="bottom|end" // position the floating button
android: layout_margin="@dimen/fab_margin"
android: src="@android:drawable/ic_dialog_email"/>

You can also define own background color for floating button using app:backgroundTint. The size of the button can also be defined by using app:fabSize attribute.

Floating Android Material Design

CollapsingToolbarLayout

A new widget called CollapsingToolbarLayout was also introduced from Android version 5.0 (Lollipop). This comes with an amazing animation; whenever a user scrolls up the control provides the fabulous animating effect. According to the Android documentation, CollapsingToolbarLayout is a wrapper for Toolbar which implements a collapsing app bar. It makes the header image collapse into the Toolbar, adjusting its title size and it is designed to be used as a direct child of an AppBarLayout.

To add CollapsingToolbarLayout to your layout, see the following,

build.gradle

dependencies{
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
}

activity_main.xml

<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
app:contentScrim="?attr/colorPrimary"
app:expandedTitleMarginEnd="64dp"
app:expandedTitleMarginStart="48dp"
app:layout_scrollFlags="scroll|exitUntilCollapsed">
.....
.....
</android.support.design.widget.CollapsingToolbarLayout>

Android Material Design Collapse

Conclusion

Google developed material design to bring together the user experience from different Google platforms. Totally, material design made the user interaction smooth, simpler and greater intuitive. When you think about material design, it has so many technologies, which will only create the impression for users while using apps during interactions. The physical world is the very big part of the material design. So all in all, what do you think of Material Design in Android? Don’t you think it’s the best part to unite and enhance the user experience while using the Android application?

Secure Your Smartphone with Android Device Manager

Smartphones have become an intrinsic part of our daily life, and without them, we feel like only half a person. We spend hundreds of dollars to buy a smartphone with high-end features and store or share our personal data with friends of family members. But, unfortunately, what if your phone is stolen or misplaced? How to locate your phone or at least wipe the sensitive data?

Don’t worry; Android has a solution for you!

Android has a great native tool, Android Device Manager which helps to locate your device and remotely wipe all the data from the phone. However, you need to set up Google account to your phone and can use any online device to track it down or to wipe the data. The important thing, though, is that you need to have it set up and ready.

If your Android phone or tablet device is lost, misplaced, or stolen, you could use Android Device Manager (ADM) to:

  • Find the device: It shows your device’s location.
  • Ring, lock, and erase all data from the device: It helps to remotely ring or lock your device, erase everything on it (Device no longer can be tracked), or to add a phone number to the lock screen.

Set-Up

Step 1: Switch ADM ON or OFF

Login to your Google account and make sure ADM is turned on. If you have a device with more than one user, only the device owner can control this setting.

  1. Open device’s Settings app in your android phone.
  2. Tap Security –> Device administrators and activate the Android Device Manager.
  3. In the Settings screen, tap Google –> Security. Under “Android Device Manager,” activate Remotely locate this device and Allow remote lock and erase. (Android versions below 6.0 can activate these options from Google Settings app )

Note: If you want to use ADM, make sure you login to your Google Account on your device

Android Device ManagerAndroid Device Manager Setup

Step 2: Make sure the Location access is ON

To use ADM, you need to have location access turned ON. If your Location access is turned OFF, here’s how to turn it ON:

  1. Open device’s Settings app in your android phone.
  2. Scroll down and tap Location settings.
  3. At the top, tap on switch to ON.

Android Device Manager Location access

Step 3: Check whether Android Device Manager can find your device

After turn ON ADM, it is time to check whether it is working properly or not. Sign into your Google Account on android.com/devicemanager and check whether your device shows up. If you have more than one device signed into same Google account, you will probably see a map with your current location, and the model of your phone listed below. You can also see when you located it last, and where it is on the map. If you have multiple devices and have set up ADM on them, you will find them in the drop-down list at the bottom.

Android Device Manager

Locate, Ring, Lock and Erase your misplaced android device over the Internet

Have you ever misplaced your phone in between the couch cushions or left it in a restaurant? ADM allows you quickly ring your phone at maximum volume to help you find it even if it’s been in silence mode.

Android Device Manager ADM

You can also add a screen lock to your device through the Android Device Manager over the internet. Whether it is a phone or a tablet, screen lock is an important security step to safeguard the information stored on your device if it accidentally gets into the wrong people hands. Being able to do this through the ADM means that even after you lose your phone, you will still be able to add a lock (if there is no lock) to your device. The Lock option will allow setting or changing a PIN or password on your device, as well as display a message on the locked screen (if any recovery message is given) and also you can provide the alternate phone number to call. This is useful if you think someone else may come across your phone and you never set up a password.

Android Device Manager  Android Device Manager Lock Screen

Wiping a phone’s data that has gone forever. Be aware that everything is gone when and if you do this, and your phone will be back to the same settings as it was in the brand new phone in the box. This means that the ADM app, associated Google account will be deactivated and you will no longer be able to track the device. This will be helpful if your phone can not be recovered or has been stolen to erase all of the data quickly.

Android Device Manager Erase data

Conclusion

Android Device Manager is the best way to find your lost or stolen android device. Let’s take advantage of this tool. Google had developed this amazing tool but will be helpful only when the device is connected to the internet connection. Hopefully, Google may soon release its offline feature to find the lost devices.

6 Mobile App Development Trends that are expected to Rule in 2016

Mobile apps have become increasingly prevalent in our lives as well as our workplaces. The customer’s demand for more mobile app experience has also significantly increasing year by year. However, businesses are also trying to exceed the customer expectations by innovating and advancing the technologies every year.

Check out these 6 mobile app development trends that are expected to rule in 2016.

Mobile app trends

IoT takes Center Stage

Many things were already connected using IoT technology. IoT is rapidly advancing and reinforcing businesses to introduce more and more smart devices and wearables continually in the market. It has extended to a great extent enabling almost every device to connect to another device. In 2016, we can expect that IoT will grow to its full potential and take center stage.

Augmented Reality based Services

AR technology is continually progressing since the last couple of years and is expected to turn into the next big technology trend. It is being implemented by various organizations to create an immersive user experience and engagement. In the coming year, we will see more augmented reality integrated mobile app launches that deliver amazing experiences for customers and larger trades for businesses.

Virtual Reality

VR is likely to hit the market enormously this year. Initially, VR was majorly limited to gaming, with the devices like Oculus Rift, Samsung Gear, and Google Cardboard. However, in the future, VR is expected to extend beyond gaming. If VR takes off, it will transform every business, from entertainment to commerce.

More Beacon and Location-based Services

Beacon and location-based services have already gained awareness among several businesses. These services will introduce a new world of possibilities for many prospects that help to interact with potential customers. Lately, the retail businesses have adopted this technology vastly. They use it to deliver the right information at the right place as customers walk by. We can expect that this trend will continue to gain force this year and will spread largely into various businesses.

Artificial Intelligence

Last year, AI went mainstream. Major companies like Google, Amazon, Facebook, and Twitter made massive investments in AI. And few of those largely invested companies also open-sourced their tools. Hence, in 2016, AI may transform the market by companies discovering new ways to apply AI.

Cloud-based App Development

Cloud technology integrated mobile apps will help to address the growing use of various smart devices and wearable technology. They provide the ability to sync all of our devices and apps across multiple devices. In 2016, this booming cloud-based app development technology will grow further and is expected to play a significant role in the mobile app development.

So, it is predicted that these trends are going to make remarkable marks in the mobile app development landscape in 2016. Adopting these advanced technologies to your business will undoubtedly bring exponential growth and results in an ultimate user experience. Vmoksha team is all excited and prepared to develop some innovative mobile apps in 2016.

Cross-Platform Mobile App Development – Why and When to Choose it?

When you have made the decision of developing a mobile application for your business, the first question that comes to your mind is which mobile platform to choose. With the availability of various platforms like iOS, Android, Blackberry and Windows, choosing the right platform is critical for reaching your business goals. However, to increase the market of a business, sticking to one platform is not a smart approach. Your application has to be developed nearly in all the competent mobile platforms to reach your target audience. Therefore, using mobile technology like Cross-platform will help your application run on multiple platforms.

Cross-platform allows developers to focus on one single code base that can run on multiple mobile platforms. Though, creating an app in cross-platform technology raises challenges such as platform limitations, differences in tools and languages, platform integration, etc. it has a rising demand for its benefits like delivering cost-effective solutions, etc. while saving your time.

cross platform mobile app development

Why to Choose Cross-platform Mobile App Development?

Greater Market Potential

With cross-platform technology, you can reach a maximum number of your target audience by being available on more platforms. The availability of your application on competing platforms like iOS and Android benefits your business with greater market potential.

Faster Development

Developing an application in different platforms separately may be a lengthy process. Developers can leverage one codebase in cross-platform and customize on multiple platforms rather than creating a new codebase for each platform. Hence, developing apps on cross-platform is faster and also helps to release your app quickly.

Cost-effective Solution

Cross-platform is a cost-effective solution as it requires single development skillset. The maintenance charges and updates will sync across all platforms and devices, which saves your time and money.

Lower Technical Barriers

Working on cross-platform technology tools like ActionScript & Flex or HTML & JavaScript is easier for developing an application. It helps a developer in lowering the technical barriers and allows them to focus in creating the application.

Uniform Look and Feel

When an application is running on a single codebase, the uniformity in look and feel of the app can be maintained easily. This kind of uniform app may portray your brand image.

Though cross-platform assists your business with various advantages, some parts of this technology have to be improved. It has some limitations with user experience, platform integration, and flexibility. Hence, it is necessary to evaluate all the possibilities and absurd when deciding whether to choose native or cross-platform. The ideal choice you make depends on your business goals.

How Vmoksha help you choose the right technology for your Mobile Application?

Either it is a native or cross-platform approach, each platform has its strengths, weaknesses, and appropriate use cases. Choosing the right technology is utterly based on your key use cases and business parameters.

No matter whichever platform you decided to create your app; whether it is native or cross-platform, Vmoksha will help your dreams come true with incredible mobile apps. We suggest you in choosing the appropriate platform for your app requirements and deliver highly innovative, interactive, and easy-to-use mobile app that sync with your business needs.

The following table summarizes the different approaches by Vmoksha:

 

Development Approach

Cross-platform

Native

Key Use Cases

  • Simpler apps, more information in nature
  • Multiple device types distributed across key users
  • Works well for enterprise applications that do not require complex device functions
  • Widget-based apps

  • Large user base on one device
  • Apps requiring high-end user experience, more transactional in nature
  • Apps requiring extensive device and/or OS functions
  • Canvas-based apps

Tools & Technologies

  • PhoneGap
  • RhoMobile
  • Worklight
  • Titanium Appcelerator
  • iOS SDK
  • Android SDK
  • Windows Phone SDK

 

So, why late! Approach us today. We combine technical resources, design talent and your business requirements to deliver mobility solutions that are not just compelling but also cost-effective.

App Landing Page is the Key Factor in App Marketing

Apps make huge business. Consequently, the demand for apps has also been increasing in the market. Hence, the presentation of your app in the app store is imperative to stand out from the competitors. Moreover, what makes a user download your app completely depends on the elements that you have included in the app landing page.

An alluring and interpretive landing page will drive more traffic to your app’s page and convince users to download your app from the app store. Therefore, app landing page optimization maximizes your downloads and has become a significant factor in the app marketing.


App Landing Page

 

Mobile App Marketing Tips

Let’s have a look at the various components that directly help to optimize your app page.

Call to Action

  • Include call-to-action button at every level
  • Use visual cues like arrows or images of people looking at the button, to draw the eye
  • If you have content below the fold, repeat the CTA
  • If you have other call-to-actions on the page, de-emphasize them visually compared with the earliest one.
  • Use commonly understood, short action-oriented words

App Description

  • Provide description for the most relevant information first
  • Describe key functionalities briefly
  • Mention key features in bullet points
  • Use familiar words

App Screenshots

  • Place appealing screenshots that demonstrate the best features of your app
  • Arrange them according to app features’ priority
  • Keep updating new screenshots in the app page when you launched new features
  • Screenshots must consist only the relevant features

Videos (App Trailer / App Preview)

  • Insert a video to demo your app
  • Explain the simple concept of how app acts in real
  • Illustrate the benefits
  • Add a call to action button at the end
  • The duration of video must be short
  • Include music and feature list

Complementary Colors

  • Use complementary colors for appealing designs
  • Try varying the text color of important messages
  • Create contrast between CTA and other elements

Above the Fold

  • Keep your CTA, key features and form fields above the fold
  • Make sure your appropriate landing page information can be seen without scrolling down
  • Keep features above the fold and detailed descriptions below the fold

So, don’t forget to consider these components while you are creating or updating your app landing page.

Marketing becomes much easier when you have a great app with incredible features. The success of an app is also associated with outstanding design, performance, scalability, and rich user interface.

Vmoksha has rich experience in creating higher grade applications from various platforms of mobile to apple watch, including premium features that are efficient to use. We develop and manage out-of-sight mobile experiences for businesses.