Тарас Семененко, Evernote

Post on 14-Jun-2015

131 views 1 download

description

Лекция "Разрабатываем приложения с API Evernote"

Transcript of Тарас Семененко, Evernote

Evernote APIEvernote APIРазрабатываем с Разрабатываем с

Тарас СемененкоТарас Семененко

Что такое Evernote?Что такое Evernote?

Всё началось с блокнота...

...стало Вашей дополнительной памятью

Протоколирование совещаний

Хранилище файлов

Сохранение рецептов

Сканирование договоров

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

пользователей

2,3 млн.пользователей в России и СНГ

Продукты Evernote

Penultimate Clearly Skitch Food Hello Web Clipper Peek

Evernote

Приложения, проверенные и работающие с Evernote

Продвигай своё приложение среди сообщества более75 млн. пользователей

Продвигай своё приложение среди сообщества более75 млн. пользователей

Пользователи Evernote хотят еще больше приложений

Пользователи Evernote хотят еще больше приложений

Создай своёприложение с Evernote

Создай своёприложение с Evernote

Два главных фактора перехода на Премиум:

• Когда пользователь использует Evernote на более чем одном устройстве• Когда пользователь использует стороннее приложение для синхронизации с Evernote

Evernote Премиум

Наша цель

Найти крутые приложения для наших пользователей, чтобы помочь максимально эффективно использовать Evernote

•Разработчики были успешны

•Продвигать крутые приложения

Мы хотим

•Галерея

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

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

•русскоязычный блог, блог на Хабре

•почтовая рассылка, твиттер

•Продвигать крутые приложения

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

Evernote API

Ключевые моменты Evernote API

• Ядро нашего продукта: Evernote API используется более 30,000 внешними разработчиками и нашими собственными приложениями одинаково. (12 млрд. вызовов API делается каждый месяц!)

• Apache Thrift, не Rest API: Мы сами заботимся о соединении, просто вызывайте методы нашего SDK из вашего приложения

• Одинаковая функции: Доступна вся функциональность Evernote (OCR, Files, Audio, etc)

• Все платформы: SDK для всех доступных платформ находится на github.

Архитектура Evernote

Note StoreNote StoreUser StoreUser Store

Note StoreNote StoreNote StoreNote StoreNote StoreNote StoreNote StoreNote StoreNote StoreNote StoreNote StoreNote Store

ThriftThrift

Evernote API: основные функции

•Доступ к пользовательскому или бизнес аккаунту Evernote

•Чтение/Создание/Поиск заметок

•Поиск связанных заметок (FindRelated)

•Напоминания (Reminders)

•Sharing и Business

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

•OAuth

•По специальному токену (для разработчиков)

Evernote API: ENML

•<en-note>

•<en-media>

•<en-crypt>

•<en-todo>

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

•Привязаны к конретному приложению

•Доступны только для чтения (из основного клиентского приложения)

•Атрибуты: applicationData (4 Кб), contentClass

Evernote API: эскизы

•На нашем сервере для каждой заметки создается эскиз (изображение размером 300x300)

•Эти эскизы можно использовать в вашем приложении

•Для получения POST-запрос на URL:

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

•Загрузить SDK

•Начать использовать API

•Создать аккаунт на sandbox.evernote.com

•Получить ключ

Личный опыт

Evernote API - обработка скриншотов

QuickTime™ and aPhoto - JPEG decompressor

are needed to see this picture.

Evernote API: получение заметок

my $user_store_url = 'https://' . $evernote_host . '/edam/user'; my $user_store_client = Thrift::HttpClient->new($user_store_url);my $user_store_prot = Thrift::BinaryProtocol->new( $user_store_client );my $user_store = EDAMUserStore::UserStoreClient->new( $user_store_prot, $user_store_prot );my $note_store_url = $user_store->getNoteStoreUrl( $auth_token );my $note_store_client = Thrift::HttpClient->new( $note_store_url );my $note_store_prot = Thrift::BinaryProtocol->new( $note_store_client );my $note_store = EDAMNoteStore::NoteStoreClient->new( $note_store_prot, $note_store_prot );my $notebook = $note_store->getNotebook( $auth_token, $nb_guid );my $filter = new EDAMNoteStore::NoteFilter({notebookGuid => $nb_guid});my $spec = new EDAMNoteStore::NotesMetadataResultSpec({includeTitle => 1, includeAttributes => 1});my $note_metadata_list = $note_store->findNotesMetadata( $auth_token, $filter, $read_notes, 1000, $spec);

Evernote API: создание заметки

my $note = EDAMTypes::Note->new();$note->title($hash_hex);$note->notebookGuid($nb_guid); my $data = EDAMTypes::Data->new();$data->size(length $image_binary);$data->bodyHash($gd_md5);$data->body($gd_data); my $resource = EDAMTypes::Resource->new();$resource->mime("image/$image_ext");$resource->data($data);$resource->attributes(EDAMTypes::ResourceAttributes->new());$resource->attributes->fileName($filepath);

Evernote API: создание заметки

$note->content( '<?xml version="1.0" encoding="UTF-8"?>' .               '<!DOCTYPE en-note SYSTEM "http://xml.evernote.com/pub/enml2.dtd">' . '<en-note><br/><en-media type="image/'.$image_ext.'" hash="' . $gd_hash_hex . '"/></en-note>' );

my $created_note = $note_store->createNote($auth_token, $note);

$note_store->deleteNote($auth_token, $note_guid);

Новые ресурсы и средства для сообщества разработчиков EvernoteНовые ресурсы и средства для сообщества разработчиков Evernote

Для разработкиДля разработки

• Переформирован и часто обновляется нашими командами редакторов и технических специалистов

• Документация, примеры и пошаговые руководства для лучшего понимания Evernote API

• Первый шаг в поиске ответов на вопросы и поддержке от сообщества разработчиков Evernote

• Представляет самые новые особенности и функции, доступные для разработчиков

dev.evernote.com

• Репозиторий, поддерживаемый нашим сообществом разработчиков

• Документация, примеры и пошаговые руководства для лучшего понимания Evernote API

• Первый шаг в поиске ответов на вопросы и поддержке от сообщества разработчиков Evernote

• Представляет самые новые особенности и функции, доступные для разработчиков

SDKs & Samplesgithub.com/evernote

• Место, где вы можете получить отзыв и оценку относительно использования Evernote API

• Наши команды поддержки активно отвечают и отслеживают изменения в текущих обсуждениях

• Разработчики Evernote и ключевые инженеры также просматривают и отвечают на вопросы.

• В нашем сообществе на форумах более 150 бета тестеров, которым можно предложить протестировать новые интеграции Evernote

EVERNOTEФорумы разработчиков

Обновления с прошлого года...

• Новые SDK: Ruby, Python, JS (Node/Phonegap/Windows Metro), Android rebuilt, iOS rebuilt

• Обновление документации: dev.evernote.com полностью перестроен и курируется нашим техническим редактором

• Безопасность / Аутентификация: Улучшена реализация механизма oAuth, добавлена обработка прав доступа

• Evernote Business API: Предоставлена более полная информация о нашем новом Business API

• Рост нашей команды: Наша команда опять увеличилась в 3 раза, новые инженеры, дизайнеры и эксперты!

• Руководства для быстрого старта: Полные пошаговые инструкции для iOS, Ruby, Javascript и Python

Мастер-классы API доступны в Интернете

Вы можете скачать слайды, посмотреть видео и послушать обсуждения на http://bit.ly/144MDjN

Тарас Семененко

dev.evernote.com

Тарас Семененко

dev.evernote.com

Спасибо!Спасибо!