Прим.: Обычно не занимаюсь переводами, но новость проскочила интересная.
В сегодняшней браузерной экосистеме веб-приложения полностью изолированы друг от друга, и для того, чтобы, к примеру, отправить комментарий в твиттер через сторонний сервис со своего сайта, необходимо использование сложных (Прим.: ну я бы просто сказал «разнообразных») API. А что если бы мы могли дать сайтам возможность использовать подобные сервисы не зная, какой конкретно сервис мы будем использовать, а зная лишь о том, что он предоставляет некий функционал.
В Android OS эта проблема решается при помощи Intents[1] — архитектуры, позволяющей взаимодействовать компонентам одного или нескольких различных приложений. По этой схеме, клиенсткое приложение создает запрос (к примеру, разослать что-нибудь) и задает параметры, которые будут переданы другому приложению-сервису. После этого пользователю предоставляется список приложений, которые регистрировали свою возможность обрабатывать данный тип intent-запроса. Затем выбранное пользователем приложение запускается в новом контексте, и ему передаются параметры, переданные клиентом в некоем, заранее определенном для конкретного типа intent, формате.
На данный момент мы прилагаем большие усилия для создания аналогичной системы для шеЬ: Web Intents. Эта система предоставит те же удобства, что и Intents для Android, но будет адаптирована для web-приложений.
Мы считаем своей основной и важнейшей задачей разработку простого и удобного в использовании API. При помощи Web Intents, вы можете подключить web-приложение к необходимому сервису используя всего лишь две строки кода! Chome сделает все остальное за вас.
Как и в Android, Web Intents будут покрывать базовый набор действий (таких как редактирование, просмотр и т.д.), которые должны удовлетворить большинство нужд современных сайтов. Однако, с ростом всемирной паутины, сайты предлагают все больше и больше функционала. И поэтому им будет предоставлена возможность создавать новые виды Intent, которые они смогут сами публиковать и документировать. Мы также планируем создать специальный сайт, на котором можно будет просматривать существующие и новые intents.
Рассмотрим в качестве примера сайт, который занимается хостингом фотографий, разработчики которого не в состоянии позволить себе добавить на сайт он-лайновый редактор изображений, но понимают, что без этой возможности сервис не станет популярным. Система Web Intent позволит им получить желаемое, затратив минимум усилий:
var intent = new Intent(Intent.EDIT, ‘image/png’, getImageDataURI());
window.navigator.startActivity(intent, loadEditedImage);
// This callback will be called when the service replies with the edited
// image data.
function loadEditedImage(data) {
var image = document.getElementById(‘image’);
setImageData(image, data);
}
Любой сайт, например, генератор мемов (прим.: ну или демотиваторов, если хотите), который посетит пользователь, сможет объявить возможность обрабатывать intent типа EDIT (редактирование) для файлов с типом image/* используя следующее объявление:
<intent
action="http://webintents.org/edit"
type="image/*"
/>
Когда пользователю понадобится отредактировать изображение, этот сервис будет предложен пользователю вместе с другими зарегистрированными редакторами изображений. И если пользователь выберет генератор мемов, в новом контексте откроется соответствующий сайт, который сможет получить данные из intent следующим способом:
var intent = window.intent;
memeImg.src = intent.data;
memegenForm.onsubmit = function() {
// Transform the image - meme it.
addMemeTaglines(memeImg, memeTopText, memeBottomText);
// Send the generated meme back to the client.
intent.postResult(getImageData(memeImg));
};
После вызова postResult(), контекст созданный для мем-генератора будет закрыт, а полученные данные будут переданны нашему приложению через callback, переданный в startActivity(). (Прим.: в данном примере, loadEditedImage)
Ребята из Mozilla тоже работают в этом направлении. Более того, мы тесно сотрудничаем с их инженерами с целью создания единого простого и полезного API.
Предлагаем вам опробовать новую возможность в любом современном браузере на странице с примерами. Желающие попробовать Intents API на своем сайте могут воспользоваться вот этой заплаткой для браузеров, которые не поддерживают данную фичу.
— [1] — intent — дословно «намерение». Пишите в комментариях, как лучше перевести этот термин… если вообще это нужно переводить
Источник: Хабрахабр - JavaScript
Оригинальная страница: [Перевод] Взаимодействие между web-приложениями через Web Intents
Комментариев нет:
Отправить комментарий