開発者コンソール
アクセスいただきありがとうございます。こちらのページは現在英語のみのご用意となっております。順次日本語化を進めてまいりますので、ご理解のほどよろしくお願いいたします。
Amazon Developer Blogs

Amazon Developer Blogs

Showing posts tagged with API

July 04, 2019

Tsuneki Umeda

今回は、デバイスアドレスAPIを使用したスキルの開発方法を紹介します。デバイスアドレスAPIを使用すれば、近くの店舗の場所のリストやレストランのおすすめ情報を提供したり、近くのジムに道順を案内したりといったデバイスの所在地データを活用したスキルを作成できます。

[Read More]

June 20, 2019

Tsuneki Umeda

今回は、本格的なスキル開発に向けて、AlexaリマインダーAPIを使用したスキルの開発方法を紹介します。リマインダーAPIを効果的に使用すれば、スキルのリテンション率アップにもつながります。

[Read More]

September 09, 2015

Corey Badcock

We are excited to announce that Amazon Cloud Drive has published its IFTTT channel. IFTTT stands for “If This Then That”, and it provides a simple way to automate interactions between your favorite apps. It connects two services together in a way that an action from one service triggers an action at another.

In order to create automations in IFTTT, you simply create what’s called a “Recipe”. Connect any of the available channels with Amazon Cloud Drive channel to create “Triggers,” which is the “If” part. Then,   have the corresponding “Actions,” the Then part. You can check out the Amazon Cloud Drive channel at https://ifttt.com/amazonclouddrive. IFTTT channels include a vast range including social media services, email, text message, GPS, electronic piggy banks and smart light bulbs.

[Read More]

August 18, 2015

Corey Badcock

The Amazon Cloud Drive API provides a RESTful interface, and Android and iOS SDKs, for upload, download, manipulation, and organization of data in the cloud. You can use this API to integrate these services in your app and offer added flexibility to your users. Your app can provide direct access to their Cloud Drive storage and the content they keep there, as well as use it to preserve game settings, preferences, and other application state on their behalf. By doing this you can also add Unlimited Storage benefits to your app through Amazon Cloud Drive’s Unlimited Photos and Unlimited Everything storage plans.

Many app developers have already integrated support for Cloud Drive into their web, desktop and mobile products, including odrive. odrive helps Amazon Cloud Drive customers automatically sync folders on their desktop with their cloud storage account. We had a chance to sit down with Alex Teu, EVP for Partnerships, to discuss his company’s experience with supporting Amazon Cloud Drive in their product. 

[Read More]

June 17, 2015

Adrian Hall

Today we are pleased to release new Android and iOS SDKs for mobile developers interested in supporting Amazon Cloud Drive. These new additions are a part of the existing Amazon Mobile App SDK and can be downloaded directly from the Developer Portal. The updates will allow you to provide Unlimited Storage benefits for your customers using your apps more quickly and efficiently.

Improved Efficiency and Benefits

You can now quickly write new apps or make your existing apps interact with Amazon Cloud Drive using both the Android and iOS SDKs. With these updates you no longer need to understand and implement a separate instance of Login with Amazon. We’ve even taken care of the best practices of implementing a back-off strategy. Best of all, you can communicate with the Amazon Cloud Drive API without ever needing to worry about networking code.

Additional benefits include the ability to work exclusively with native Java and Objective-C object types, removing the need to ever parse JSON, as well as eliminating the need to refer back to the REST API documentation online. You also no longer need to explicitly use the Amazon Cloud Drive API to get Account endpoints, removing an entire step from your development workflow.

Apps Using New Amazon Cloud Drive Mobile SDKs

With the launch of the Amazon Cloud Drive mobile developer SDKs, we are also excited to announce new third-party apps supporting Cloud Drive through the Android and iOS SDKs.

A+ Gallery (Android): iPhone style photo gallery.

PhotoTime (iOS): Explore your photos at snapshot speed.

TextMaker HD Basic (Android): Create and edit documents on your tablet.

PlanMaker HD Basic (Android): Create and edit spreadsheets on your tablet.

Presentations HD Basic (Android): Create and edit presentations and slide shows on your tablet.
 

And, coming soon:

FiLMiC Pro (iOS): Turn your iOS camera into a broadcast worthy 2K HD video camera.

Vizzywig (iOS): All-in-one, movie-making application for iPhone, iPad, and iPod touch that lets you record, edit, and preview in real time.

Cleen (iOS): Clean up your camera roll and photos in your Amazon Cloud Drive account.


For more photo, video and productivity apps be sure to check out the Amazon Cloud Drive App Gallery. You can also visit the Developer Portal to download the Amazon Mobile App SDK or to learn more about the Amazon Cloud Drive API and SDKs for Android and iOS. If you have any questions about getting started you can visit our Developer Forum.

-Dave (@TheDaveDev)

November 11, 2014

Peter Heinrich

Developers have been using Amazon to store data in the cloud for some time, using the highly reliable and scalable Amazon Web Services like S3 to provide durable object storage and retrieval. Amazon Cloud Drive offers that same convenience to consumers, and millions use it to securely access their digital content from their desktop and mobile devices. Now you can build on that functionality and connect users to their Cloud Drive content from within your own apps. Enhance your photo editing app, for example, by allowing users to browse photos they have already stored in the cloud.

A New REST API

Today Amazon Cloud Drive announced the launch of its public API platform, which provides a RESTful interface for upload, download, manipulation, and organization of data in the cloud. You can use this API to integrate these services in your app and offer added flexibility to your users. Your app can provide direct access to their Cloud Drive storage and the content they keep there, as well as use it to preserve game settings, preferences, and other application state on their behalf.

For example, let’s say you have a note-taking app that stores its data locally. Using the new Cloud Drive API, you could allow users to enable synchronization with their personal storage in the cloud. Saving notes to their Cloud Drive would make the data accessible to your customers wherever they run your app—without requiring you to set up and manage servers, storage, or load balancers.

In addition to the convenience of this direct connection to their Cloud Drive from your app, customers also benefit from the reliability and safety of the underlying AWS platform on which Cloud Drive is constructed.

Less to Build, Faster to Market

When you connect your users to their own Cloud Drive storage, you can preserve and protect their app data without having to build an online data management system of your own. Cloud Drive is built to be robust and to scale transparently, so you never have to worry about availability or performance. The Cloud Drive API doesn’t impose any restrictions on file type, so your app can work with all kinds of content.

Many app developers have already integrated support for Cloud Drive into their mobile products. You can see some of these on the newly launched Cloud Drive App Gallery page. They include photo print services, content creation and editing apps, and content aggregation apps.

You can also hear first-hand what it’s like to integrate with Cloud Drive. Listen to Jason Toy, CEO of Filepicker, discuss the process and how it added value for their customers.

Integration Is Easy

Check out the Cloud Drive API Documentation for details on how to add Cloud Drive to your mobile apps. There is also a third-party SDK provided by Temboo to get you up and running fast.

-peter (@peterdotgames

 

 

 

 

 

 

 

July 08, 2014

Peter Heinrich

In-App Purchasing (IAP) is gaining in popularity with developers as it continues to be a reliable revenue generator for mobile apps and games. It is the basis of Free-to-Play, eliminating up-front costs but allowing customers to purchase upgrades and add-ons they find valuable. The Amazon Appstore platform is designed to manage these transactions, and we have enhanced our In-App purchasing API to make it easier for you to manage the purchases your customers make.

Improved Customer Experience

With this update, the In-App Purchasing API improves the receipt process to provide better visibility into the fulfillment status of your customers’ in-app purchases.

The updated API replaces PurchaseToken with a unique receipt identifier called ReceiptId. The ReceiptId value allows you to:

  • Determine fulfillment status and reconcile transaction records with your Amazon earnings report.
  • Identify duplicate transactions to prevent over-fulfillment of digital content.
  • Receive notification of transactions that cancel orders.

Getting Started

The updated API is backward-compatible, which means that your existing applications will continue to work without modification. We recommend that you migrate to the latest version, though, so that you can benefit from these improvements.

  • If you are adding in-app purchasing to your app for the first time, simply build your project with the Amazon Mobile App SDK, which includes the latest version of the In-App Purchasing API.
  • If your app already uses an older version of the API but you’re not ready to migrate from PurchaseToken to ReceiptId, you can still update to the latest version. Your app will work without modification, so you can prepare for the switch and follow through with the actual migration when you’re ready.
  • If you are ready to use ReceiptId now, simply follow the migration guide available on our Developer Portal.

Additional Resources

For more details on in-app purchasing and how to implement it in your mobile projects, check out our Developer Portal and blog. Dive deep on the new API, or explore related topics such as increasing conversion, digital item sales in desktop and web-based applications, and managing promotions and discounts.

 

June 17, 2014

Russell Beattie

The Cordova Push Notifications Plugin is a project that lets hybrid web app developers create apps that respond to custom push notifications from services such as the Apple Push Notification Service (APNS), Google Cloud Messaging (GCM) and most recently Amazon Device Messaging (ADM). This enables hybrid web apps to be notified when an online service has information for it - such as a personal message, sports score or appointment - even if the app is not currently running.

If you're unfamiliar with Amazon Device Messaging, it's a simple, efficient and free messaging service from Amazon that lets developers send push notifications from the cloud to Kindle Fire devices, helping app creators more deeply engage with their customers by keeping them up to date and involved.

You can find the plugin, and complete documentation on the Cordova PushPlugin Github repository, but here are the basics on getting started using the plugin for Amazon Fire OS.

Overview

Macintosh HD:Users:beattier:Desktop:cordova_adm:adm-cordova.png

Amazon Device Messaging works similarly to the other push notification services and has three main parts involved in the process:

  • Your server sends notifications (messages, updates, scores, etc.) to the ADM Servers to be routed to the client apps.
  • ADM Servers queue and route notifications to client apps.
  • Your  app receives the notification on a device.

The Cordova Push Notifications Plugin allows your hybrid web app to use JavaScript to register with the ADM Server and receive notification events when sent from your server.

Please note that ADM only works with Fire OS devices and the Cordova Amazon Fire OS platform target. For more information about setting up a Fire OS Cordova project, please see our earlier blog post,  Building Higher Performance Cordova-based Fire OS Apps By Implementing Amazon WebView Support.

ADM Credentials

In order for your server to send notifications to your app, both the server and app, need to be authenticated/registered with the ADM Server:

  1. Create a sample Cordova app for the Amazon Fire OS platform so you have the app name, package name and the debug build ready.
  2. Create a developer account on the Amazon Developer Portal if you don't already have one
  3. Fill out the New App Submission form and turn Device Messaging switch to ON.
  4. Create Security Profile to obtain ADM credentials for your app.
    Note: For development, you can use the MD5 signature of the debug apk created by Cordova build process found in <project_path>/platforms/amazon-fireos/ant-build.

You will need to make note of the OAuth Credentials (Client ID and Client Secret) to be used on your notifications server and the API Key to be used in your client app. These can be found on the Security Profile Management pages in the areas marked in green below:

Macintosh HD:Users:beattier:Desktop:cordova_adm:credentials.png

Below is a graphic which shows a general overview of the authentication process and how your client app and your server to authenticate and register with the ADM Server:

Macintosh HD:Users:beattier:Desktop:cordova_adm:authentication2.png

Install Push Notifications Plugin

Once you have created an initial Cordova app for the Amazon Fire OS platform, use the standard plugin command from your project directory to install the Push Notifications Plugin.

cordova plugin add https://github.com/phonegap-build/PushPlugin.git

This will download the plugin and install it in your app's project directory. There will be a new folder called <com.phonegap.plugins.PushPlugin> inside your project's plugin directory.  This folder contains: the source files for the plugin, an Example directory that has a sample web app you can use to receive ADM notifications on the client, and a Node.js script you can use to send notifications, simulating what a server would normally do.

Before you can start testing notifications, you will need to follow the steps below to download and install the ADM support libraries and add the proper credentials to your project.

Install Amazon Device Messaging Library

The push notifications plugin needs the support files found in the ADM API. Follow these steps to download the SDK and install the library files in your Cordova project:

  1. Download the Amazon Mobile App SDK and unzip.
  2. Create a folder called ext_libs in <project_path>/platforms/amazon-fireos folder.
  3. Copy amazon-device-messaging-x.x.x.jar into the <project_path>/platforms/amazon-fireos/ext_libs
  4. Create a new text file called ant.properties in the <project_path>/platforms/amazon-fireos folder, and add a java.compiler.classpath entry pointing at the ADM library. For example:
    java.compiler.classpath=./ext_libs/amazon-device-messaging-1.0.1.jar
    
  5. Create a new text file called api_key.txt in the <project_path>/platforms/amazon-fireos/assets folder, and copy the API Key you obtained in the Credentials section above. Note: Be careful not to add any extra spaces to the text file.

Create Sample App

Here's a basic web app that can be used to test receiving notifications on the client. Create new index.html and index.js files in your project's www directory and copy the markup/code below.

The index.html page is simply a container for the messages to be displayed on the device:

index.html:

<!DOCTYPE html>
<html>
<head>
	<title>ADM Test</title>
</head>
<body>
	<h1>ADM Test</h1>
	<pre id="container" style="word-wrap:break-word"></pre>
	<script src="cordova.js"></script>
	<script src="index.js"></script>
</body>
</html>

The index.js script uses the PushPlugin to display notifications received on the client.

index.js:

var container = document.getElementById("container");
var pushNotification;

document.addEventListener("deviceready", handleDeviceReady, true);

function handleDeviceReady(){

    pushNotification = window.plugins.pushNotification;
    pushNotification.register( handleSuccess, handleError, {"ecb":"handleNotification"});

}

function handleNotification(e) {

    log("**** EVENT RECEIVED: " + e.event );

    if(e.event == "registered"){
        if(e.regid.length > 0){
            log("REGISTRATION ID:  <br>" + e.regid);
            log("<a href=\"mailto:?subject=ADM%20Registration%20ID&body=" + encodeURIComponent(e.regid) + "\">Email Registration ID</a>");
        }
    } else if(e.event == "message"){
        if ( e.foreground ) {
            log("FOREGROUND NOTIFICATION");
        } else {
            if ( e.coldstart )  {
                log("COLDSTART NOTIFICATION");
            } else {
                log("BACKGROUND NOTIFICATION");
            }
        }
        log("MESSAGE: " + e.payload.message );
        log("TIME: " + e.payload.timeStamp );
        log("URL: " + e.payload.url );
    } else if(e.event == "error"){
        log("ERROR: " + e.msg );
    }
}

function handleSuccess(result) {
    log("Plugin Success: " + result );
}

function handleError(error) {
    log("Plugin Error: " + error );
}

function log(msg){
    container.innerHTML += msg + "<br>";
    console.log(msg);
}

Notes about the JavaScript:

  • The handleDeviceReady method will use the pushNotification object to register the client with the ADM Server. This requires that the api_key.txt file contains the correct information.
  • The Registration ID that is returned to the client is used by your server to send notifications to the correct device/app combination. The ID is very long, so there's a link to email the ID to yourself to be used in testing.
  • The notification event has a flag to tell your app whether it was in the foreground, background or not started when the notification arrived.
  • The ADM notification event contains a payload object consisting of arbitrary fields populated by your server. In this example, the server will send a message, timestamp and URL, but each app can be different.
  • If there are errors with authentication or other issues such as connectivity problems, the app should log to the screen any error messages sent to your app.

Once you have your client app ready, use Cordova's command line to install the app on your test device (usually using the "cordova run" command). If you have set up everything correctly, the app will start, authenticate with the ADM Server and display the Registration ID unique to your device/app to be used by your notifications server.

Test ADM Notifications

Normally, you will have a dedicated server which sends app notifications via the ADM Server, using the Registration ID to uniquely identify each instance of your app running on a specific device. Your app will be responsible for getting the Registration ID from each registered device to your server.

For testing purposes, we are instead going to use the pushADM.js Node script found in the <project_path>/plugins/com.phonegap.plugins.PushPlugin/Example/server folder. This script acts in place of your server, authenticating with Amazon and then pushing notifications to the ADM Servers to be delivered to your app. (Node is a prerequisite for Cordova, so you should already have it installed on your system.)

Before we can use the script, we need to add in your OAuth Credentials and Registration ID. Here is a snippet from the top part of the test script that you will be editing:

pushADM.js:

// Client ID and Client Secret received from ADM portal
var CLIENT_ID = ""; 
var CLIENT_SECRET = "";

// Registration ID, received on device after it registers with ADM server
var REGISTRATION_IDS = [""];

// Message payload to be sent to client
var payload = {
        data: {
            message: "PushPlugin works!!",
            url: "http://www.amazon.com",
            timeStamp: new Date().toISOString()
        },
        consolidationKey: "my app",
        expiresAfter: 3600
};
...

Edit the pushADM.js script :

  1. Copy the OAuth credentials - Client ID and Client Secret - you obtained in the Credentials section above into the CLIENT_ID and CLIENT_SECRET variables.
  2. Copy one or more Registration IDs from a registered app into the REGISTRATION_IDS array. Note: You can fill this var with IDs from multiple devices for testing. Using the sample app above, you can email the Registration ID to yourself and then copy/paste it into the test script.
  3. Optionally edit the payload object with custom values to be sent to your app.

Run the pushADM.js script from a command line using Node:

node pushADM.js

The result on the command line should be a series of log messages which shows the script authenticating with the ADM Server and then sending a message. The app running on your Kindle Fire should then instantly show the message if it is in the foreground, or add a notification alert to the top bar if it is in the background or not running. You can run this script as many times as you need to test your app.

Here is what the of the sample web app above looks like after receiving a notification:

Macintosh HD:Users:beattier:Desktop:cordova_adm:Screenshot_2014-05-28-14-17-15.png

Summary

The steps above should give you a good start towards implementing ADM push notifications into your app. Once you have your app working, it will be very easy to customize the notification payload as you need to create compelling new apps and services for your customers.

If you have trouble, please make sure to check out the links below for information and support:

Good luck!

-Russ

 

 

June 13, 2014

Paul Cutsinger

Today our guest blogger is Asaf Barzilay, VP of products from Extreme Reality (www.xtr3d.com). They build the Extreme Motion SDK that enables developers to incorporate motion control into their apps. They’ve also released Pandamania, a dancing game that uses this technology. In this post, Asaf talks about the importance of sound, their experience integrating the Dolby Audio API into their platform, and how easy it was to port this experience to Kindle Fire tablets.

About Extreme Reality

Extreme Reality enables people to interact with computing devices through their body motion, without touch, using only a 2D camera. We are the only company to provide full-body, software-based, motion analysis and control for any computing device or operating system that supports a standard camera. The Extreme Motion SDK enables developers to create a wide range of experiences (applications, games, security solutions and more) that break the physical barriers of current hardware-based technologies.  Our technology works seamlessly with nearly all consumer electronics and on most operating systems: Windows, iOS and Android.

Patented worldwide, Extreme Motion is already in use by game developers for various operating systems and devices, from AAA publishers to indie developers.

Kindle Fire: An Immersive Game Machine

Pandamania is a dance game based on Extreme Motion SDK, which is an image-processing engine that recognizes the player’s skeleton in real time, using the device's integrated camera. The player imitates the panda dance moves, and the more accurate the imitation, the more points earned. At first, Pandamania was intended to be a simple example app to showcase accuracy, durability and potential.

The first thing we noticed about this fun, fast paced dance game is that people instantly connected with the panda; they just loved the animation and effects. The music was appealing but not a major part of the game’s allure.

Prior to Kindle Fire, Pandamania had been ported on most operating systems, such as Windows, iOS and Android. Making the game available on Kindle Fire seemed like the obvious next step as Kindle Fire is one of the 3 leading devices in the tablet category worldwide.

The implementation was simple, since Kindle Fire is an Android based device. Within two days we arranged the overall look and resolution. Then, we looked for a tool that would create a unique advantage for the game on the Amazon Appstore. We discovered Dolby Audio API, a brilliant way to enhance the music aspect of the game.

Enhancing the Sound Factor

The Dolby Audio API for Android provided a significantly noticeable improvement to the background music and game sounds. As the player needs to stand ~6 feet away from the device for the camera to see his body, a good quality sound is a crucial element for a more immersive and fun experience.

We used Unity3d as the development platform for the game, as it is cross platform and easy to work with. Both APIs (Extreme Motion SDK and the Dolby Audio API) are easy to use plugins which do all the heavy-lifting behind the scenes and provide a simple external API for the game developer, allowing him to enable gesture-recognition, and different sound profile enhancements with just a few rows of code, and no need to write any native device code.

"The integration of Dolby Audio API with the Unity3d based game "Pandamania" was simple and intuitive. As this is a dancing game, the quality of the music and sounds was a very important.  By using the Dolby Audio API, the quality of the sound was considerably enhanced, leading to a far better gaming experience"
 - Assaf Lehr, Product Manager, Extreme Reality 

“Extreme Reality’s technology is an impressive offering, bringing full arcade gameplay to the Kindle Fire HD and HDX.  The impressive motion tracking capabilities of Pandamania convert the Kindle Fire HDX into an immersive game machine. By using the Dolby Audio API for Android to drive full, distinct sound to players 6 feet away, Pandamania allows users to concentrate on physical as well as the audio elements of the game.”
Andy Vaughan, Developer Relations Manager, Dolby

Try Extreme Reality and Dolby Audio in Your App

Thanks to Asaf and the team at Extreme Reality. They’re building some fun apps and a platform that enables some really engaging experiences.

Give it a try and see how you could enhance your apps. Let me know if you submit an app using Extreme Reality or Dolby Audio.

You can learn more about the technologies covered in this blog post in the following links:

- Paul

@PaulCutsinger

 

April 24, 2014

David Isbitski

Launched in 2010, Soundtracker by South Ventures USA, is described as an app that allows music to connect people by making it easy to discover and play music in real time with friends and anyone nearby. With Soundtracker you can create stations, chat with other users, listen and comment on their latest stations amongst other features. Available on the Amazon Appstore here as well as other platforms, Soundtracker has over 4 million downloads and 1 million active users worldwide across all platforms.

I had the chance to sit down with Daniele Calabrese, CEO and founder, to discuss their experience bringing Soundtracker into the Amazon Appstore and how they’ve managed to leverage different Amazon Mobile Apps APIs to their advantage.

Increasing Opportunity with Limited Work

Even though the app itself is available on various platforms, the reason why Daniele decided to bring the app to Amazon Appstore was simple. The “opportunity with Kindle was too good to pass on since we would be able to create an app for two platforms at once.” Daniele says that early on the team realized that the Android SDK was compatible with Kindle Fire, so they decided to build the apps in tandem. The team found out quickly that “the process in getting Soundtracker into the Amazon Appstore was very easy and the results from it has definitely paid off.”

“Monetization in the Amazon Appstore jumped 100% using Amazon’s In-App Purchasing API and Mobile Ads API in the first month since implementation” – Daniele Calabrese

 

Figure 1- Kindle Fire UI

Leveraging Amazon Mobile Apps SDK to Improve Engagement

Besides using Amazon’s In-App Purchasing and Mobile Ads API, Soundtracker also uses Amazon’s Maps API and Device Messaging API as well. For Soundtracker “being able to monetize and engage your users are the most important factor in choosing a platform” says Daniele. The team credits these specific API’s as “the reason why we were able to be so successful in the Amazon Appstore.” By integrating certain APIs you can also qualify for different programs. Daniele says the team is “excited to be admitted into the Appstore Developer Select program,” which provides the team with 500k mobile ad impressions, Amazon Coins rewards to customers, and more.

Figure 2- Nearby feature and push notification

Since Soundtracker detects where other users are, relative to their current location, notifying other users who are nearby is crucial for engagement. The team decided to use Amazon Device Messaging API and Amazon Maps API to help solve this issue. The device messaging and maps APIs allow users to really engage by integrating interactive maps directly into your app, as well as sending out push notifications from the cloud to the user. When your app relies heavily on social interaction, such as Soundtracker’s feature of commenting or discovering other users’ playlist selections, getting a user’s attention is one of the most important factors. By using these APIs, the team was able to see a consistent lift in engagement.                

“Engagement in the Amazon Appstore increased by 400% in the last 6 months. Number of sessions, length of sessions, and number of tracks streamed per user increased on a weekly basis.”- Daniele Calabrese

So how long did it take for the team to integrate all these APIs? Daniele says “the process for development and testing altogether took only a week and the process was very straight forward”.

Expanding into the Living Room with Amazon Fire TV

According to Daniele, “since performance has been successful with their current app on Kindle Fire” the team plans to expand even more into the Amazon ecosystem. The next step for the team is “integrating with Amazon’s music offering and getting their app on Amazon Fire TV.” Since the team has already qualified for Appstore Developer Select, the team can now qualify for the Appstore Developer Select Amazon Fire TV benefits as well by optimizing for the Amazon Fire TV. This includes enhanced on-device merchandising and a 500k Amazon Coins offer per qualifying app.

“I would recommend Amazon Appstore to other developers. Getting our app on Kindle Fire was very easy and it gives developers a great opportunity to distribute and monetize their apps.” – Daniele Calabrese