Статьи

Представляем библиотеку UserVoice WP8 для пользовательских функций

Сделано. Я сделал свою первую библиотеку для Windows Phone 8. Этот пост в блоге рассказывает о том, почему я это сделал и как им пользоваться

Почему UserVoice?

У независимых разработчиков есть большая проблема: у нас нет команды поддержки, чтобы объяснить нашим пользователям, как использовать наши приложения или как решать определенные проблемы / проблемы. Что приводит к нашей следующей проблеме: пользователи являются клиентами. Клиенты хотят быть довольными. Наша работа — делать это с нашими приложениями, предоставляя им высокий уровень взаимодействия с пользователем и многофункциональные приложения. Часто пользователи не прилагают лишних усилий, чтобы отправить нам электронное письмо, чтобы сообщить нам, что не так. Или они планируют это, но забывают об этом. Или еще хуже: они раздражаются и удаляют наши приложения.

Как некоторые из вас знают, я работаю в группе поддержки оборудования немецкого телефонного оператора. За эти годы я узнал, как важно выслушивать клиентов, подбирать их идеи и пожелания и работать, чтобы сделать их, если это возможно. И если это невозможно, вы должны сказать им, что — даже это важная часть обслуживания клиентов!

Многие из нас создали учетную запись в Твиттере, отдельный почтовый адрес, возможно, дополнительную онлайн-форму, чтобы отвечать на все запросы пользователей. Но пользователи, как правило, не используют их по одной причине: они не интегрированы в наши приложения. Поэтому я провожу некоторое время, «гугляя с Bing» (спасибо @robwirving за эту потрясающую фразу!) На возможных решениях.

Uservoice — лучшая ценность, если вы используете бесплатную подписку, и у них есть API, который мы можем использовать ( см. Также этот пост о том, как начать работу с uservoice). Я сделал ее очень тонкой библиотекой и сконцентрировалась на функциях, которые нам действительно нужны в нашем приложении на стороне пользователя.

Библиотека!

Вы можете легко получить библиотеку через NuGet прямо в своем приложении. Просто добавьте этот пакет в список пакетов вашего приложения:

uservoice_lib_nuget

Библиотека также нуждается в RestSharp , который автоматически добавляется в ваш проект, если вы устанавливаете библиотеку.

После того, как вы установили его, вам нужно объявлять некоторые переменные, которые нам нужны снова и снова при использовании библиотеки:

Urls.subDomain = "<your subdomain>";
Urls.oAuthCallBackUri = "<your callback url>";
Tokens.ConsumerKey = "<your ConsumerKey>";
Tokens.ConsumerSecret = "<your ConsumerSecret>";

Вы можете получить эти значения из Настройки / Интеграции в вашей учетной записи UserVoice.

Кроме того, вы должны сохранить эти токены, чтобы не запрашивать у пользователя логин снова и снова.

Tokens.AccessToken
Tokens.AccessTokenSecret  
Tokens.OwnerAccessToken
Tokens.OwnerAccessTokenSecret

Еще один важный класс, о котором вы должны знать, это класс RequestParamaters:

Снимок экрана (309)

Он содержит необходимые переменные для всех запросов, и вы можете легко использовать их, чтобы сохранить их для TombStoning или что-либо еще, что вы хотите сохранить их.

Давайте посмотрим на возможные запросы:

  • База знаний:
KnowledgeBase kb = new KnowledgeBase();`   
//load complete knowledge base  
UservoiceRequests.KnowledgeBase = await kb.knowledgeBase();   
//load specific topic 
UservoiceRequests.KnowledgeBaseTopic = await kb.knowledgeBaseTopic(RequestParameters.topicId);
  •  Предложения:
Suggestion suggestion = new Suggestion();  
//load all suggestions  
UservoiceRequests.allSuggestions = await suggestion.allSuggestions(RequestParameters.forumId, RequestParameters.suggestionsPage);  
//vote on a suggestion 
UservoiceRequests.voteForSuggestion = await suggestion.voteOnSuggestion(RequestParameters.forumId, RequestParameters.suggestionId, RequestParameters.vote);  
//submit new suggestion  
UservoiceRequests.postSuggestion = await suggestion.newSuggestion(RequestParameters.forumId, RequestParameters.newSuggestionTitle, RequestParameters.newSuggestionText, RequestParameters.newSuggestionReferrer, RequestParameters.newSuggestionVotes); 
//search suggestions  
UservoiceRequests.searchSuggestion = await suggestion.searchSuggestions(RequestParameters.suggestionsSearchQuery);
  •  Данные пользователя:
User user = new User();  
UservoiceRequests.User = await user.userData();
  •  Билеты:
//Tickets are not associated with the user from the API side. However, you are able to show all tickets from a user with this:  
ticket = new Ticket();  
UservoiceRequests.AllTicketsFromUser = await ticket.allTicketsFromUser(RequestParameters.userMail); 
//submit a new ticket on behalf of the user
UservoiceRequests.newTicket = await ticket.newTicket(RequestParameters.TicketSubject, RequestParameters.TicketMessage);

Как видите, все запросы асинхронные.

Вам не нужно явно аутентифицировать пользователя, потому что библиотека создана для автоматического определения этого. Если требуется аутентифицированный пользователь, он будет перенаправлен на страницу аутентификации UserVoice.

В текущей версии вам нужно будет снова вручную отправить запрос после аутентификации пользователя, но я обновлю библиотеку, чтобы сделать это автоматически в ближайшее время.

И последнее замечание: я не использую сериализатор RestSharp — все запросы возвращают соответствующую строку JSON. Таким образом, каждый из вас может использовать выбранный сериализатор ( хотя я абсолютно рекомендую JSON.net ).

Пожалуйста, рассмотрите текущую версию как бета-версию, и сообщайте обо всех проблемах с этим через Твиттер или почту .

А теперь наслаждайся моей библиотекой и счастливым кодированием!