Message:

Monthly Archives

June, 2018

Since Backendless does not have native APIs to download files, today we’ll talk about how to implement this function in your Android application. In order to do that, we’ll need to combine Backendless file listing API and android.app.DownloadManager. There are several alternatives to this approach, but the selected one requires less code to write and has a well-thought structure.

Once a developer uploads files to the Backendless Files system, each file gets a public URL which can either be obtained using the Backendless Console or calculated using the following URL scheme:

publicURL 1024x472 - How to download a file stored in Backendless with your Android appThis public URI is the full path to the file in your Backendless file system. Directory listing API returns a list of the  FileInfo objects representing the files located in the directory, where each element in the collection contains the following properties:

  • name  – the name of the file or directory without any path information
  • public URL  – absolute URL of the file or directory
  • URL  – relative URL of the file or directory starting from the root of the file storage
  • created on  – a timestamp indicating when the file or directory was created

In this guide, we’ll be dealing with listing and downloading all the files with the  .html  extension in the /web  folder located in the root directory of your Backendless file system.

As for the Android app itself, we’ll need to:

  1. Define the  INTERNET and WRITE_EXTERNAL_STORAGE  permissions in Android manifest:
  2. Create a method to list all files in the directory:

    In this code sample, allFiles is a variable, which stores the results of the listing operation, and filesList is a TextView class where we show all the existing files.

    When the listing process is finished, we can start the download.

  3. Create a method which gets the public URIs of each file in a directory and will download these files in series:

    That’s all we need to make it work on Android devices with SDK < 23. On devices with SDK 23+, we’ll have application users to grant the permission to use their device storage. A method to check the device SDK and to ask for permission (if necessary) may look like this (in our code sample it is called before the download starts in Step 3):

We need to call this method in download method of your download activity  class. The result of the user choice should be handled in a separate callback, the same callback the download process should be restored:

Where downloadFiles is a button to start the download.

 The whole test app interface will look like this:

mainActivity - How to download a file stored in Backendless with your Android app

Selection 154 - How to download a file stored in Backendless with your Android app

Once you click the ALLOW button, the download process will be started.

Selection 155 - How to download a file stored in Backendless with your Android app

That’s it! The archive with this application can be found here: https://drive.google.com/open?id=1A4Mx3UEWK_ckgaSjaw0TWU5OvVq4ocLY

Don’t forget to add your Backendless AppId and Android API key in the  Defaults class.

Thanks for reading this post, hope you like it! 

Great news, guys! Backendless 5 is now released and it’s time to show you some new features we’ve been working on.  In this article we will talk about how to integrate the Backendless Real-Time Database into your Angular application. Meanwhile, you can check out the previous version of our Angular app in this post. In case you haven’t read the post and don’t have that app  yet, please review the previous article, because we will use that application as a starting point for this tutorial. Or, if you just want to start working with the it right away, just download the source code from this GitHub commit.

ezgif 5 83e7494ea4 - How to use the Backendless Real-Time database in your Angular App

Continue reading

Images displayed in your app often may be responsible for the bandwidth consumed by the device, which has a direct impact on the performance, battery level and the amount of memory which the app allocates. As a result, optimizing images can often bring noticeable performance improvements for your app: the fewer bytes it needs to download, the smaller impact is on the client’s bandwidth and the faster app will download and render content on the screen.

Let’s imagine you have an app where you store pictures to show them to your app’s users. But what happens if the resolution of these images is high and they are taking a lot of space? Download of these files is time-consuming and, as a result, it slows down your app making the user experience substandard.

A recommended approach is to create image thumbnails with lower resolutions relative to the original one. These thumbnails can be used to preview the image in the application.

The thumbnails can be generated using Backendless API Services (the Business Logic section). If you are not familiar with how to create your own API Service, please check the How to generate a QR code with Backendless API Service post, which describes the process of API service creation in greater detail.

In this article, we will focus on the task of generating thumbnail images with different resolutions.

Continue reading

With the release of version 5 of Backendless and introduction of the real-time capabilities the dynamics of the client-server integration will be changing. The real-time functionality should result in a significant reduction of the API calls an application makes. To further reflect the value associated with each pricing plan in Backendless Cloud, we introduced several changes:

  1. All plans now have a limit for real-time connections:
    Free and Developer plans: 100 connections
    Cloud 9: 100,000 connections
    Cloud99: 500,000 connections
  2. The API call/minute limit has changed to API call/month. The limit is reset monthly when the billing cycle renews. Keep in mind that “monthly” does not mean “from the first day of a month till the first day of the next month”. Instead, every app has its own billing cycle, which renews every month on the date when the app switched to the current billing plan.
  3. The API/month limit cannot be increased for the Free and Developer plans, however, for the Cloud9 and Cloud99 plans any overages for the API calls above the limit are automatically processed for the rate of  $1.00/100,000 API calls for the Cloud9 plan and $0.80/100,000 API calls for the Cloud99 plan.
  4. The price of the Developer plan has been increased to $15.00/month. For all customers who were on the Developer plan prior to Backendless 5 release, the change will apply in 2 months.

I am happy to report that Backendless version 5.0 has been released. The Backendless Cloud installation has been updated, all apps run on the new version now. The new release is a major milestone for Backendless as it significantly strengthens our position as a leader in the mobile application development space. The new release delivers the following functionality:

  • Real-Time Database – changes in the database are pushed to the connected clients whenever new objects are created, updated or deleted. Multiple instances of the client application can stay up-to-date with the latest data with minimal client-server API traffic.
    Real-Time Database API Documentation: Android  iOS  JS
  • Real-Time Messaging – the publish/subscribe system has been redesigned so that published messages are delivered to the subscribers in real-time. Previously the system used the polling approach. With the new implementation not only the messages are delivered significantly faster, the number of API calls to receive messages is reduced to zero.
    Real-Time Messaging Documentation: Android  iOS  JS
  • Management of Counters and Cache – Atomic Counters and the data in Backendless Cache can now be managed in Backendless Console. You can now see a list of cache entries and counters, create new ones, modify or delete the data:
  • API Documentation Generation – Backendless Console can now generate API docs in a variety of well-known formats for all Data Service API operations. Supported formats include:
    • OpenAPI/Swagger 2.0 (JSON and YAML)
    • Open API 3.0 (JSON and YAML)
    • RAML 1.0
    • WADL
    • API Blueprint 1A
    • Postman Collection

    To generate an API document:

    1. login to Backendless Console and switch to the Data screen.
    2. Select a data table and click the REST CONSOLE tab.
    3. Click the Generate API Docs link
    4. Select a format from the drop-down list and click the GENERATE button.
    5. Backendless generates the document and provides a download link:
      generate api docs - Backendless 5 is released!

Our roadmap for version 5 consists of some very exciting features. We are looking forward to bringing all this great functionality to you so you can continue building powerful apps while enjoying Backendless more than ever.

Suppose your app logs in a user. As a result, the app gets user-token  which uniquely identifies the user’s session with Backendless. If your app uses our SDK for Android, iOS, JS or .NET, the user-token  value is managed directly by our libraries. Specifically, it is added to every API call to maintain the session and tell the server about the user’s identity. There are situations when you need to get the user object when your app has only user-token. This could happen if you used persistent login in the application, which stores user-token on the device. The implementation does not save the user object, however, there is a way to retrieve the user based on the user-token value (assuming the token is still valid). In this article, I will show you how to do this.

The technique for retrieving the user object is creating an API service which accepts a  user-token in the header and retrieves the current user. I will use Codeless to create the API service because it has an intuitive interface and allows you to solve these tasks very quickly, just by building the algorithms instead of writing code:

Continue reading
Find us in facebook