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

2,074 views

Published on

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

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,074
On SlideShare
0
From Embeds
0
Number of Embeds
852
Actions
Shares
0
Downloads
15
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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

  1. 1. Экосистема Evernote: API, продвижение и анонсконкурса для разработчиков Игорь Афанасьев @iafan
  2. 2. Что такое Evernote
  3. 3. Помни всё!
  4. 4. 35 млн зарегистрированных пользователей+ пользователи Skitch, Penultimate 1 млн пользователей в России и странах СНГ
  5. 5. Android, iOS, Windows Phone,Windows 8 новинка!Mac OS, Windows Desktopвеб-клиентChrome, Firefox,Safari, Internet ExplorerEvernote Clearly (Chrome, Firefox)Evernote Food (Android, iOS)Evernote Hello (Android, iOS)Evernote Peek (iPad)Skitch (Mac OS, iPad, Android)Penultimate (iPad)
  6. 6. Evernote для Windows 8
  7. 7. Экосистема Evernote
  8. 8. Галерея Evernote
  9. 9. Каналы продвиженияџГалереяџПромо-баннеры на сайте evernote.comџпромо-баннеры в приложениях для Mac OS и Windows Desktopџрусскоязычный блогџпочтовая рассылкаџТвиттерџБлог на Хабрахабре
  10. 10. Evernote API
  11. 11. Сайт для разработчиков: http://dev.evernote.com/ Там вы найдете: - обзор возможностей API - полную документацию по API - ресурсы (видео, новости, техподдержка)- примеры приложений, построенных на API
  12. 12. Русскоязычная поддержка по API:Обратная связь Ссылка на наше сообщество поддержки есть в виде закладки на каждой странице русскоязычного сайта. При оформлении вопроса выберите раздел “Evernote API”.
  13. 13. Cloud APIОсобенности:џкроссплатформенный (общение непосредственно с сервером в онлайне)џБиблиотеки для C++, C#, Objective-C, Java, JavaME, PHP, Perl, Python, Ruby, ActionScript 3џТребует регистрации и получения персонального ключаПрименения:џлюбые веб-сервисыџлюбые локальные клиентские приложения
  14. 14. Cloud APIС чего начать работу с Cloud APIџИдете на dev.evernote.com в раздел Cloud APIџЗаполняете анкету на получение ключаџЗагружаете Evernote API SDK и знакомитесь с документациейџПосле получения ключа он работает только на сервере-”песочнице” sandbox.evernote.comџПо окончании разработки и тестирования приложения заполняете на сайте форму и активируете ключ на основном сервере
  15. 15. Cloud API: авторизация Обычная OAuth Только для разработчиков Веб- и клиентские приложения (выдается конкретному (авторизация через веб-форму,пользователю, авторизация в базе можно хранить ключи через логин и пароль) для множества пользователей) Тип нужно указать при запросе ключа+ определить права: создание [,чтение, изменение] объектов
  16. 16. Cloud API: OAuth (несколько упрощенная схема)џПользователь идет на ваш сайт (foo.ru) и выбирает функцию “Подключиться к Evernote”џсайт открывает форму авторизации на сайте Evernote: https://www.evernote.com/oauth?...&oauth_callback=https%3A%2F%2Ffoo.ru%2Foa uthCallbackџПользователь входит в аккаунт Evernote и нажимает кнопку "Авторизовать приложение Foo".џПользователь переходит обратно на ваш сайт: https://foo.ru/oauthCallback&oauth_token=xxxyyyzzz
  17. 17. Cloud API: Thrift http://thrift.apache.org/Основные принципы:џСинхронный вызов функций (методов объектов) на сервереџБиблиотеки для разных языков изолируют всю сетевую сериализацию запросов и ответов. Для программиста это просто создание объектов и вызов их методов. Ответы и исключения — тоже в виде объектов (структур).
  18. 18. Cloud API: Объектыhttp://dev.evernote.com/documentation/reference/UserStore NoteStoreПроверка версии протокола, Работа с блокнотами,аутентификация метками, заметками и ихпользователя, обновление ресурсами, сохраненнымитокена, получение запросами, подключеннымиинформации о пользователе, (чужими) блокнотами, поиско месячных лимитах. заметок по критериям, экспорт (получение публичного URL заметки), открытие доступа к блокнотам, синхронизация. + типизированные исключения + константы: лимиты и регулярные выражения для валидации
  19. 19. 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);
  20. 20. Cloud API: Thrift// создание нового объекта-блокнота и заполнение параметров$notebook = new edam_type_Notebook(); // создаем локальный объект$notebook->name = “новый блокнот”; // указываем имя// создание блокнота на сервере и получение его GUIDtry { $notebook = $noteStore->createNotebook($authToken, $notebook);} catch (Exception $e) { // блокнот создать не удалось}$nbguid = $notebook->guid;// создание нового объекта-заметки и заполнение параметров$note = new edam_type_Note(); // создаем локальный объект$note->notebookGuid = $nbguid; // указываем GUID блокнота$note->title = “Моя заметка”; // заголовок$note->content = $content_ENML; // контент в формате ENML$note->created = time() * 1000; // время в миллисекундах// создание заметки на сервере и получение ее GUID$note = $noteStore->createNote($authToken, $note);$noteguid = $note->guid;
  21. 21. Cloud API: Синхронизация Полная спецификация — на сайтеОсновные принципы:џКлиентское приложение хранит счетчик изменений Update Sequence Number (USN) для последнего изменения, полученного с сервера.џЦикл: приложение запрашивает блок изменений начиная с текущего USN, применяет эти изменения локально и сохраняет новое значение USN.џUSN достиг максимального значения — синхронизация завершена.
  22. 22. Cloud API: Подписка Полная спецификация — на сайтеМожно периодически синхронизироваться, аможно подписаться на определенныеизменения. Подписка — свойство ключа API.Можно задать фильтр для подписки наопределенное подмножество заметок.https://foo.ru?userId=evernoteUserId&guid=noteGuid&reason=createНастройка по запросу через форму на сайте.
  23. 23. Cloud API: ENML Полная спецификация и DTD — на сайтеENML — XHTML с некоторыми особенностями:џкорневой тег <en-note> <en-note> <h1>Hello</h1> <p>World</p> </en-note>џтег <en-media> для изображений и вложенных файлов <en-media type="image/jpeg" hash="f03c1c2d96bc67eda02968c8b5af9008" />џтег <en-crypt> для зашифрованных фрагментов (есть пример JavaScript-библиотеки, позволяющей открывать эти фрагменты прямо в браузере) <en-crypt>NKLHX5yK1MlpzemJQijAN6C4545s2EODxQ8Bg1r==</en-crypt>џтег <en-todo> для флажков задач <en-todo /> <en-todo checked="true" />
  24. 24. Cloud API: Особые заметки Полная спецификация — на сайтеВ Evernote можно создавать особые заметки,привязанные к определенному приложению (какв Evernote Hello и Evernote Food и Skitch).В обычных клиентских приложениях Evernoteони будут доступны только для чтения.Note->attributes->contentClass = companyName.appName.noteTypeУ каждой заметки есть также хэш ключ-значениедля хранения данных внешних приложений.Максимальный размер каждой пары — 4 Кб.NoteStore.getNoteApplicationDataEntry + NoteStore.setNoteApplicationDataEntry
  25. 25. Cloud API: “Смотри также” Полная спецификация — на сайтеНовая функция Evernote API — возможностьискать связанные по смыслу заметки, блокнотыили метки. На входе — GUID заметки или текст.На выходе — массив подходящих объектов.result = NoteStore.findRelated(QueryObject, ResultSpec);
  26. 26. Cloud API: Эскизы Полная спецификация — на сайтеДля каждой заметки на сервере создается ееэскиз. Их можно использовать для визуализациизаметок в ваших приложениях.На выходе — PNG, JPEG или GIF, вписанный впрямоугольник нужного вам размера, но неболее 300x300pхPOST-запрос на URL:https://[sandbox|www].evernote.com/shard/shardID/thm/note/GUID[?size=75]
  27. 27. Внимание, конкурс!
  28. 28. Задание Сделайте и опубликуйте приложение на любой платформе, работающее с заметками Evernote через Cloud API, или интегрируйте ваше существующее приложение с Evernote.Обратная связь Мы постараемся проконсультировать вас по любым сопутствующим вопросам (как техническим, так и организационным).
  29. 29. Критерии оценки работџкачество реализации приложения: внешний вид и работоспособностьџфункциональность приложения, его актуальность для пользователейџобъем интеграции с Evernote: приложение может просто отправлять информацию в наш сервис, а может загружать ее, создавать новые блокноты, использовать технологию распознавания и т. д.
  30. 30. Главный приз 100 квартальных премиум-подписок которые вы сможете использовать для продвижения своего приложения, и реклама вашего приложенияв Галерее, блоге, Твиттере и почтовой рассылке (800 000+ русскоязычных пользователей)
  31. 31. Прием заявокс 11 ноября по 11 декабря Подробности опубликуем в блоге blog.evernote.com/ru
  32. 32. Спасибо!www.evernote.com

×