Solved – Unable to retrieve audio/video file recorded and saved in Ionic 2 App

AgilizTech works on exciting web and mobile app projects for customers around the globe. We develop both native and hybrid apps for our customers.

Recently, while building a hybrid app on the Ionic 2 Framework, our developers encountered an issue in coding an audio/video file record and retrieval. The initial functionality seemed simple, but that’s where Cordova threw spanner in the works. We had researched extensively online and weren’t able to find any solution. So, when our developers toiled for a few hours, and successfully solved it, we decided to share the solution and let others benefit from it.

For this project, our team had used the Cordova plugin – cordova-plugin-media-capture. This plugin provides access to the device’s audio, image, and video capture capabilities.

It is super easy to use. So, to record a video, we used the code:


navigator.device.capture.captureVideo(
	(result) => {
		console.log(result);
		console.log(“Video captured Successfully”);
		// Your code goes here.
	} ,
	(error) => {
		console.log(error);
		console.log(“Video captured failed”);
	}
);

Everything looked pretty simple. The video was getting recorded using the device’s recording application. On Android, the code worked like a charm. However, the team ran into issues in the iOS device, as the saved file was not getting played.

While debugging the issue, we observed the Media Capture object in captureSuccess.
In Android, the file was getting stored in a persistent location, so the code worked fine when we tried to retrieve the saved file.

But in iOS device, the file got stored in a temporary location!
Result, we were unable to play the saved file in the application.

Solution?

Once we figured out the issue, the solution was simple. We just had to copy the file from this temporary location to a persistent location.

We chose a persistent location that covered both Android and iOS. The File plugin provided such an alias: cordova.file.dataDirectory

navigator.device.capture.captureVideo(
	(result) => {
	  console.log(“Video captured Successfully”);
	  var fileName = result[0].name;
	  var dir = result[0].localURL.split(“/”);
	  dir.pop();
	  var fromDirectory = dir.join(“/”);
	  var toDirectory = cordova.file.dataDirectory;
	  File.copyFile (fromDirectory , fileName , toDirectory , fileName).then( res =>{
			console.log(“File successfully copied”);
			// Your code goes here.
		});
     	  } ,
	(error) => {
		console.log(error);
		console.log(“Video captured failed”);
	}
);

Everything fell into place after that.

Summarising, to make the recording and retrieval possible, just save the file in a persistent location that’s common to both Android and iOS.

Have you faced a similar issue while building an app in Ionic 2? Do let us know in the comments!

AgilizTech is working on some pretty cool Hybrid Apps powered by Ionic 2. Would you like to know more?

Contact Us

Solved: Click Handler Reaction Delay in Ionic 2

I am happy to announce the solution for the click handler reaction delay in Ionic 2. As an Ionic developer, you would be familiar with the infamous 300 ms delay that occurs, when a user attempts to tap and register a click on the hybrid mobile app you painstakingly built with Ionic 2.

Cue in some dramatic visualization…
Click Handler Reaction Delay in Ionic 2

Moving on…

The delay in registering the tap is the time lag taken by the click handler in reacting. And this delay is specific to ion-col and ion-items.

In their blog and the official documentation, the Ionic team has discussed about the issue in detail. The reason for this delay is said to be the Ionic click blocker, that blocks any interaction until a transition is completely done. This is to recognize if the user wants a click event or double click event on touch devices.

How does this affect the user?

This makes the application slow, thus affecting user experience. The issue is more prominent on iOS devices.

Solved: Click Handler Reaction Delay in Ionic 2

The solution to this issue is quite simple. All you need to do is this:

Add the ‘tappable‘ directive to your element.

For example:

<ion-item tappable (click)=“myClickHandler()”>
    // Your code goes here
</ion-item>
Note: We recommend you add the ‘tappable‘ directive to the click handlers of elements which are not normally clickable.

Hope this post helped you overcome this rather frustrating issue in Ionic 2.

Happy Coding!!

 

AgilizTech is working on some pretty cool Hybrid Apps powered by Ionic 2.

Would you like to know more?

Contact Us

5 best practices for mobile app qa

5 Best Practices for Mobile App QA by AgilizTech

According to a study by Compuware, only 16% users give mobile apps more than two chances. So for the other 84%, it is a two-shot experience. The app is given just two chances to prove its mark, and if it fails it is unceremoniously removed from their phones. A lot of apps have been sent to the app graveyard due to bad user experiences. An example is Forecast, which was let down due to inadequate QA and innumerable bugs in the Android version.

A report by Perfecto Mobiles claims that, 44% of the app defects are reported by users! Of these, 20% are gathered via public user reviews and 24% sourced from direct user feedback.

5-best-practices-for-mobile-app-qa

Source: Perfecto Mobiles

All this emphasizes on the need to have a clear cut QA strategy, which ensures mobile app quality. And that requires serious efforts. You may ask, “We already put the app through a series of testing programs like usability, performance, security, compatibility, etc. What more can we do?” Well, no one disputes the fact that all apps are tested before being shipped, but are we following the best practices for mobile app QA?
At AgilizTech, we asked our team to list out the 5 best practices for mobile app QA that they swear by. Does your team follow these?

Best Practices for Mobile App QA

1. Practice agile methodology

True to our name, we have established a culture of continuous development, integration and testing. This shortens time gaps between new functionality, testing, bug detection and bug fixes. This also improves efficiency and makes vital course changes feasible for us.

2. Start testing along with development

It is best to start testing early as bugs may become too expensive to fix at later stages. We create test plans at the earliest. Also, we conduct test cycles and track results of each and every round.

3. Balance automated and manual testing

While automation may prove to be useful in repeated testing and saves time, it cannot completely replace manual testing. A fine balance between the two is required. Here are some key points to note:

  • Automated tests are essential for complex tests with multiple components.
  • Once we are familiar with the app functionality, automation helps in speeding up the testing process.
  • New functions are tested manually as it is difficult to write automated test scripts before a manual test.

The tool we prefer is Appium. To create scripts, we use Java Selenium.

4. Test on real devices too apart from emulators

We recently invested in Apple and Android devices, as testing on real devices gives us a better idea on the look and feel of the app and its usability. We agree that there are numerous device variants, and it is impossible to test on all these. So to tackle this and maximize test coverage, we go for a mix of emulators and devices. Also, we set device and OS preferences initially, and then ensure that the app works well on these.

What we do differently is that, we distribute the app among the AgilizTech employees and ask for their feedback on the app. This helps us understand the hits and misses in QA and leads to improved testing.

5. Verify if your app is power hungry

How many times would you have deleted apps because they were draining your phone battery?
That’s right, battery consumption is an important criterion on which users may give up on your app. Do compare your app with its competitors. While you are at it, also learn how it adjusts to negative conditions like varying network strengths or suspended connections.

Spoilt with choices, users decide the fate of an app in a jiffy. Ensuring that the app is bug-proof goes a long way in scoring higher user adoption. Hence, along with programming amazing features, it is also important to have solid QA done before the launch. Following these 5 best practices  for mobile app QA might prove beneficial to you.

Remember – A healthy app leads to happy users. 

Are you looking for an App Development partner? Look no further, as AgilizTech provides end-to-end services in the app-sphere, such as, development, testing and porting.

Contact us now!