Статьи

Ноль строк программного кода для привлечения пользователей Windows Phone для оценки и проверки приложения

Я не думаю, что мне нужно подробно останавливаться на том, как важно получать оценки для вашего приложения в Магазине — и, желательно,  хорошие  оценки. Это ни в коем случае не ново и оригинально:  Маттис Хоекстра что-то написал для этого , наш голландский  DPE Райен Кишна даже сделал пакет NuGet для подобных вещей , у Telerik есть что-то  в их великолепных Radcontrols  для  Windows Phone,   и все же я, будучи упрямым, должен сделать что-то свое Причина этого проста: я хотел (конечно) сделать поведение, чтобы вы могли добавить его в свое приложение без какого-либо кода вообще — просто перетащите его поверх первой страницы, и оно будет работать из коробки. И Blend предоставит вам некоторые свойства, которые вы можете установить — или нет. Он отлично работает из коробки. Как и в моем последнем приложении для Windows Phone,  2 Phone Pong .

Если вы уроните поведение в верхней части стартовой страницы, оно будет работать без изменений. Но Blend предоставляет четыре свойства для настройки режима работы:

образ

  • Подпись — это текст в верхней части окна сообщения, который будет отображаться, когда приложение напоминает пользователю. По умолчанию установлено «Обзор приложения». Вы можете установить другое значение в XAML или (лучше) связать его со свойством модели представления, содержащим глобализированный текст.
  • MaxReminders  — это количество раз, которое поведение будет запрашивать у пользователя. Если пользователь отказывается просматривать больше времени, чем MaxReminders, он больше не будет беспокоиться.
  • Сообщение  показывает фактическое сообщение напоминания. Значения по умолчанию: «Вы уже использовали это приложение несколько раз, хотели бы вы просмотреть его в магазине?»
  • RemindFrequency  — количество запусков приложения, после которого отображается запрос на просмотр.

Таким образом, с настройками по умолчанию приложение спросит вас 7- й , 14- й  и 21- й  раз, хотите ли вы просмотреть приложение. После третьего увольнения вас больше не будут спрашивать. Это сделано для того, чтобы пользователи не раздражались от бесконечных запросов на рецензирование и не давали отрицательных отзывов из-за этого. И, конечно, он перестанет спрашивать пользователя, когда он решил оставить отзыв.

Само поведение построено поверх моей  библиотеки wp7nl на codeplex  (конечно) и реализовано как  SafeBehavior . Сначала я создал простой класс данных для хранения данных в локальном хранилище:

namespace Wp7nl.Behaviors
{
  /// <summary>
  /// Simple data class to store data in used by RemindReviewBehavior
  /// </summary>
  public class RemindData
  {
    public int Starts { get; set; }

    public bool Reviewed { get; set; }

    public bool Refused { get; set; }
  }
}

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

Само поведение начинается достаточно просто, будучи стандартным SafeBehavior:

namespace Wp7nl.Behaviors
{
  /// <summary>
  /// A behavior to remind the user to review the app after a couple
  /// times using it
  /// </summary>
  public class RemindReviewBehavior: SafeBehavior<Page>
  {
    protected override void OnSetup()
    {
      CheckRemind();
   }
}

Вся функциональность в методе CheckRemind:

private void CheckRemind()
{
  var helper = new IsolatedStorageHelper<RemindData>();
  var remindData = 
     helper.ExistsInStorage() ? helper.RetrieveFromStorage() : new RemindData();

  if (!remindData.Reviewed && !remindData.Refused)
  {
    remindData.Starts++;
    if (remindData.Starts % RemindFrequency == 0)
    {
      var result = MessageBox.Show(Message, Caption, MessageBoxButton.OKCancel);
      if (result == MessageBoxResult.OK)
      {
        Review();
        remindData.Reviewed = true;
      }
      else
      {
        if (remindData.Starts >= MaxReminders * RemindFrequency)
        {
          remindData.Refused = true;
        }
      }
    }
    helper.SaveToStorage(remindData);
  }
}

Используя IsolatedStorageHelper из wp7nl, он проверяет, есть ли уже данные из предыдущего запуска в локальном хранилище — если нет, он создается. Если Отзыв или Отказ верны, никаких действий не требуется. После этого число или количество пусков увеличивается, и он проверяет, можно ли разделить количество пусков на RemindFrequency. Если это так, сообщение отображается,

Если пользователь затем решает просмотреть приложение, вызывается метод Review, а для свойства Reviewed устанавливается значение true, поэтому пользователь больше не будет беспокоиться. Если пользователь не хочет выполнять рецензирование, приложение проверяет, было ли уже выставлено максимальное количество запросов на рецензирование, и если да, то для свойства «Отклонено» установлено значение true. Пользователь (также) больше не беспокоится. И в конце, remindData сохраняется, поэтому все, что произошло в методе, сохраняется для потомков.

Метод обзора довольно прост:

private void Review()
{
  var marketplaceReviewTask = new MarketplaceReviewTask();
  try
  {
    marketplaceReviewTask.Show();
  }
  catch (InvalidOperationException ex)
  {
  }
}

Единственным недостатком является то, что пользователь может нажать кнопку «ОК», перейти в магазин и нажать «Отмена». Обмана нет, но если кто-то не хочет давать обзор, что угодно — по крайней мере, он / она тоже не даст плохой обзор.

Четыре свойства зависимости я опущу для краткости.

Я поместил код в следующую версию библиотеки wp7nl, но сейчас вы можете получить его из демонстрационного решения. Я изменил MaxReminders на 20 и RemindFrequency на 2, поэтому  демо-приложение  будет просить вас каждый раз оценивать его, 20 раз. Эту настройку я бы точно не рекомендовал в дикой природе, но она показывает суть.

Теперь Matthijs, Rajen, я и несколько других показали вам несколько способов сделать это. Мой даже не требует от вас кода — просто перетащите. Теперь убедитесь, что вы реализуете любое из этих решений. Если вы играете в Windows Phone ради веселья, славы, денег или всего вышеперечисленного — вы хотите, чтобы эти приложения были загружены. И рейтинги имеют решающее значение для этого.