Конкурс для разработчиков от Evernote

33

description

Рассказ об открытом и бесплатном Evernote API и анонс конкурса для разработчиков

Transcript of Конкурс для разработчиков от Evernote

Page 1: Конкурс для разработчиков от Evernote
Page 2: Конкурс для разработчиков от Evernote

Экосистема Evernote:API, продвижение и анонс

конкурса для разработчиков

Игорь Афанасьев@iafan

Page 3: Конкурс для разработчиков от Evernote

Что такое Evernote

Page 4: Конкурс для разработчиков от Evernote

Помни всё!

Page 5: Конкурс для разработчиков от Evernote

35 млнзарегистрированных

пользователей+ пользователи Skitch, Penultimate

1 млнпользователей

в России и странах СНГ

Page 6: Конкурс для разработчиков от Evernote

Android, iOS, Windows PhoneWindows 8

Mac OS, Windows Desktop

веб-клиент

Chrome, Firefox,Safari, Internet Explorer

Evernote Clearly (Chrome, Firefox)Evernote Food (Android, iOS)Evernote Hello (Android, iOS) Evernote Peek (iPad)Skitch (Mac OS, iPad, Android)Penultimate (iPad)

,

новинка!

Page 7: Конкурс для разработчиков от Evernote

Evernote для Windows 8

Page 8: Конкурс для разработчиков от Evernote

Экосистема Evernote

Page 9: Конкурс для разработчиков от Evernote

Галерея Evernote

Page 10: Конкурс для разработчиков от Evernote

Каналы продвижения

џ

џ

џпромо-баннеры в приложенияхдля Mac OS и Windows Desktop

џрусскоязычный блог

џпочтовая рассылка

џТвиттер

џБлог на Хабрахабре

Галерея

Промо-баннеры на сайте evernote.com

Page 11: Конкурс для разработчиков от Evernote

Evernote API

Page 12: Конкурс для разработчиков от Evernote

Там вы найдете:- обзор возможностей API

- полную документацию по API- ресурсы (видео, новости, техподдержка)

- примеры приложений, построенных на API

Сайт для разработчиков:

http://dev.evernote.com/

Page 13: Конкурс для разработчиков от Evernote

Русскоязычная поддержкапо API:

Ссылка на наше сообщество поддержкиесть в виде закладки на каждой странице

русскоязычного сайта.

При оформлении вопроса выберите раздел“Evernote API”.

Об

рат

ная

свя

зь

Page 14: Конкурс для разработчиков от Evernote

Особенности:џкроссплатформенный (общение

непосредственно с сервером в онлайне)џБиблиотеки для C++, Objective-C, Java,

JavaME, PHP, Perl, Python, Ruby, ActionScript 3џТребует регистрации и получения

персонального ключа

Применения:џлюбые веб-сервисыџлюбые локальные клиентские приложения

C#,

Cloud API

Page 15: Конкурс для разработчиков от Evernote

С чего начать работу с Cloud API

џИдете на dev.evernote.com в раздел Cloud APIџЗаполняете анкету на получение ключаџЗагружаете Evernote API SDK и знакомитесь с

документациейџПосле получения ключа он работает только на

сервере-”песочнице” sandbox.evernote.comџПо окончании разработки и тестирования

приложения заполняете на сайте форму и активируете ключ на основном сервере

Cloud API

Page 16: Конкурс для разработчиков от Evernote

Cloud API: авторизация

Только для разработчиков(выдается конкретному

пользователю, авторизациячерез логин и пароль)

Обычная OAuthВеб- и клиентские приложения(авторизация через веб-форму,

в базе можно хранить ключидля множества пользователей)

Тип нужно указать при запросе ключа+ определить права: создание [,чтение, изменение] объектов

Page 17: Конкурс для разработчиков от Evernote

Cloud API: OAuth

џПользователь идет на ваш сайт (foo.ru) и выбирает функцию “Подключиться к Evernote”

џсайт открывает форму авторизации на сайте Evernote:

џПользователь входит в аккаунт Evernote и нажимает кнопку "Авторизовать приложение Foo".

џПользователь переходит обратно на ваш сайт:

https://www.evernote.com/oauth?...&oauth_callback=https%3A%2F%2Ffoo.ru%2FoauthCallback

https://foo.ru/oauthCallback&oauth_token=xxxyyyzzz

(несколько упрощенная схема)

Page 18: Конкурс для разработчиков от Evernote

Cloud API: Thrift

Основные принципы:џСинхронный вызов функций (методов объектов)

на сервереџБиблиотеки для разных языков изолируют всю

сетевую сериализацию запросов и ответов. Для программиста это просто создание объектов и вызов их методов. Ответы и исключения — тоже в виде объектов (структур).

http://thrift.apache.org/

Page 19: Конкурс для разработчиков от Evernote

Cloud API: Объекты

http://dev.evernote.com/documentation/reference/

UserStore NoteStoreПроверка версии протокола, аутентификацияпользователя, обновление токена, получение информации о пользователе, о месячных лимитах.

Работа с блокнотами, метками, заметками и их ресурсами, сохраненными запросами, подключенными (чужими) блокнотами, поиск заметок по критериям, экспорт (получение публичного URL заметки), открытие доступа к блокнотам, синхронизация.

+ типизированные исключения+ константы: лимиты и регулярные выражения для валидации

Page 20: Конкурс для разработчиков от Evernote

Cloud API: Thrift

// подключение к базе пользователей

// аутентификация по ключу разработчика (вызов функции на сервере)

// получение токена (поля структуры) — он используется при всех запросах

// получение информациии о пользователе

// подключение к базе заметок конкретного пользователя

$userStoreHttpClient = new THttpClient('sandbox.evernote.com', 443, "/edam/user", 'https');$userStoreProtocol = new TBinaryProtocol(userStoreHttpClient);$userStore = new UserStoreClient($userStoreProtocol, $userStoreProtocol);

$authResult = $userStore->authenticate($username, $password, $consumerKey, $consumerSecret);

$authToken = $authResult->authenticationToken;

$user = $userStore->getUser($authToken);

$noteStoreHttpClient = new THttpClient('sandbox.evernote.com', 443, "/edam/note/" . $user->shardId, 'https');$noteStoreProtocol = new TBinaryProtocol($noteStoreHttpClient);$noteStore = new NoteStoreClient($noteStoreProtocol, $noteStoreProtocol);

Page 21: Конкурс для разработчиков от Evernote

Cloud API: Thrift

// создание нового объекта-блокнота и заполнение параметров // создаем локальный объект

// указываем имя

// создание блокнота на сервере и получение его GUID

// блокнот создать не удалось

// создание нового объекта-заметки и заполнение параметров // создаем локальный объект // указываем GUID блокнота // заголовок

// контент в формате ENML// время в миллисекундах

// создание заметки на сервере и получение ее GUID

$notebook = new edam_type_Notebook();$notebook->name = “новый блокнот”;

$notebook = $noteStore->createNotebook($authToken, $notebook);

$nbguid = $notebook->guid;

$note = new edam_type_Note();$note->notebookGuid = $nbguid;$note->title = “Моя заметка”;$note->content = $content_ENML; $note->created = time() * 1000;

$note = $noteStore->createNote($authToken, $note);$noteguid = $note->guid;

try {

} catch (Exception $e) {

}

Page 22: Конкурс для разработчиков от Evernote

Cloud API: Синхронизация

Полная спецификация — на сайте

Основные принципы:

џКлиентское приложение хранит счетчик изменений Update Sequence Number (USN) для последнего изменения, полученного с сервера.

џЦикл: приложение запрашивает блок изменений начиная с текущего USN, применяет эти изменения локально и сохраняет новое значение USN.

џUSN достиг максимального значения — синхронизация завершена.

Page 23: Конкурс для разработчиков от Evernote

Cloud API: Подписка

Полная спецификация — на сайте

Можно периодически синхронизироваться, а можно подписаться на определенные изменения. Подписка — свойство ключа API. Можно задать фильтр для подписки на определенное подмножество заметок.

Настройка по запросу через форму на сайте.

https://foo.ru?userId= &guid= &reason=evernoteUserId noteGuid create

Page 24: Конкурс для разработчиков от Evernote

Cloud API: ENML

Полная спецификация и DTD — на сайте

ENML — XHTML с некоторыми особенностями:џкорневой тег <en-note>

џтег <en-media> для изображений и вложенных файлов

џтег <en-crypt> для зашифрованных фрагментов (есть пример JavaScript-библиотеки, позволяющей открывать эти фрагменты прямо в браузере)

џтег <en-todo> для флажков задач

<en-note> </en-note>

<en-media type="image/jpeg" hash="f03c1c2d96bc67eda02968c8b5af9008" />

<en-crypt>NKLHX5yK1MlpzemJQijAN6C4545s2EODxQ8Bg1r==</en-crypt>

<en-todo /><en-todo checked="true" />

<h1>Hello</h1> <p>World</p>

Page 25: Конкурс для разработчиков от Evernote

Cloud API: Особые заметки

В Evernote можно создавать особые заметки, привязанные к определенному приложению (как в Evernote Hello и Evernote Food и Skitch).В обычных клиентских приложениях Evernoteони будут доступны только для чтения.

У каждой заметки есть также хэш ключ-значение для хранения данных внешних приложений. Максимальный размер каждой пары — 4 Кб.

Note->attributes->contentClass = 'companyName.appName.noteType'

NoteStore.getNoteApplicationDataEntry + NoteStore.setNoteApplicationDataEntry

Полная спецификация — на сайте

Page 26: Конкурс для разработчиков от Evernote

Cloud API: “Смотри также”

Новая функция Evernote API — возможность искать связанные по смыслу заметки, блокноты или метки. На входе — GUID заметки или текст. На выходе — массив подходящих объектов.

result = NoteStore.findRelated( , );QueryObject ResultSpec

Полная спецификация — на сайте

Page 27: Конкурс для разработчиков от Evernote

Cloud API: Эскизы

Для каждой заметки на сервере создается ее эскиз. Их можно использовать для визуализации заметок в ваших приложениях.

На выходе — PNG, JPEG или GIF, вписанный в прямоугольник нужного вам размера, но не более 300x300pх

POST-запрос на URL:

https:// .evernote.com/shard/ /thm/note/ [?size= ][sandbox|www] shardID GUID 75

Полная спецификация — на сайте

Page 28: Конкурс для разработчиков от Evernote

Внимание, конкурс!

Page 29: Конкурс для разработчиков от Evernote

Сделайте и опубликуйте приложение на любой платформе, работающее с заметками Evernote через Cloud API, или интегрируйтеваше существующее приложение с Evernote.

Об

рат

ная

свя

зь Мы постараемся проконсультировать вас по любым сопутствующим вопросам (как техническим, так и организационным).

Задание

Page 30: Конкурс для разработчиков от Evernote

Критерии оценки работ

џкачество реализации приложения: внешний вид и работоспособность

џфункциональность приложения, его актуальность для пользователей

џобъем интеграции с Evernote: приложение может просто отправлять информацию в наш сервис, а может загружать ее, создавать новые блокноты, использовать технологию распознавания и т. д.

Page 31: Конкурс для разработчиков от Evernote

Главный приз

100 квартальныхпремиум-подписок

которые вы сможете использоватьдля продвижения своего приложения,

и реклама вашего приложенияв Галерее, блоге, Твиттере и почтовой рассылке

(800 000+ русскоязычных пользователей)

Page 32: Конкурс для разработчиков от Evernote

Подробности опубликуем в блоге

Прием заявокс 11 ноября по 11 декабря

blog.evernote.com/ru

Page 33: Конкурс для разработчиков от Evernote

Спасибо!

www.evernote.com