Невозобновляемая покупка в приложении с восстановлением с использованием iCloud

Я создаю приложение, в котором у меня есть функция покупки в приложении. Я использую невозобновляемый тип подписки, но я должен предоставить поддержку для восстановления подписки на нескольких устройствах.

Пройдя несколько документов, я узнал, что iCloud стал лучшим способом реализовать его и предоставить подписной контент для нескольких устройств пользователя. Наконец, я решил, что следующий проект будет реализован:

  1. Пользователь исследует приложение
  2. Щелчок по кнопке покупки в приложении
  3. Проверить доступность iCloud

    1. Доступен iCloud:

      1. Продолжайте покупку обычным способом
    2. iCloud недоступен:

      1. Показать оповещение: «Войдите в iCloud, чтобы получить доступ к подписанному контенту на другом устройстве», с опциями «ОК» и «Продолжить в любом случае»,

        1. Нажмите ОК:

          1. Остается на одной странице
        2. Нажмите «Продолжить в любом случае»:

          1. Продолжается покупка
          2. Если вы уже приобрели и приобрели iCloud, обновите квитанцию ​​iCloud
  4. При успешной покупке мы получаем квитанцию ​​о транзакции. Мы будем хранить эту квитанцию ​​в iCloud (одно время в iCloud на момент покупки), используя хранилище ключей, а также по умолчанию для пользователей

  5. Покупка успешна.

  6. Пользователь запускает приложение с другого устройства

  7. Проверьте наличие транзакции в пользовательских настройках по умолчанию. Если доступно, проверьте и действуйте соответственно
  8. Если квитанция недоступна для пользователей по умолчанию, проверьте наличие iCloud

    1. Доступен iCloud:

      1. Проверьте, доступно ли получение транзакции
      2. Если доступно, проверьте квитанцию. Если квитанция действительна, укажите подписанный контент
      3. Если они недоступны, никаких действий и действий не требуется
    2. iCloud недоступен:

      1. Показывать предупреждение: «Пожалуйста, войдите в свою учетную запись iCloud, чтобы наслаждаться подписным контентом, если есть» с опциями «ОК»
      2. Внутри приложения пользователь переключается на вариант «подписаться на добавление HD», проверит его подписку

ВОПРОС:

  1. Пользователь покупает приложение без входа в iCloud
  2. Запускает приложение с другого устройства
  3. Он не может получить подписанный контент

Единственный способ справиться с этим сценарием идеально, учитывая все тестовые сценарии, состоит в том, чтобы хранить учетные данные пользователя iCloud в пользовательских значениях по умолчанию, которые я не уверен, что можно сделать / рекомендуется / разрешено. Любое предложение приветствуется.

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

Я создал приложение, которое использует iCloud NSUbiquitousKeyValueStore (который имеет аналогичный селектор, такой как NSUserDefaults ) для синхронизации потребляемого типа элемента IAP. Вы можете проверить репозиции на Github, как MKiCloudSync, чтобы узнать, как это работает.

При использовании NSUbiquitousKeyValueStore нет необходимости, чтобы приложение NSUbiquitousKeyValueStore статус iCloud iDevices. В моем случае, если у кого-то есть 2 устройства, устройство 1 имеет вход iCloud, но устройство 2 нет, я проигнорирую устройство 2.

  • Восстановить покупку InApp с помощью быстрой, iOS
  • При тестировании покупки приложений в iOS
  • In-App покупает Apple ID против пользователя сервера
  • При покупке приложения не работает после публикации приложения iOS в App Store
  • Как отменить In-App-Purchase, если мой сервер не отвечает и не может предоставить контент? (IOS)
  • Бесплатная подписка - это единственный тип покупки In-App
  • productsRequest не работает в быстрой для покупок в приложении
  • Как я могу сбросить изолированные приложения в приложении на iOS для тестирования?
  • получить URL-адрес статуса подписки с незаполненным ответом от сервера Apple, уведомления о статусе обновления, statusUpdateNotification
  • При покупке приложений с помощью SwifyStoreKit невозможно получить информацию о продукте
  • InApp Purchases: Почему вы должны получить список продуктов перед их продажей?
  • Interesting Posts

    Использование dequeueReusableCellWithIdentifier для пользовательских ячеек

    Как получить даты текущего месяца в Objective c?

    IOS: Добавить языки как Localizable.strings

    java.io.IOException: сервер вернул код ответа HTTP: 405 для URL

    Создать ссылку iOS для приложения в магазине приложений – лучший способ?

    Архивирование проекта iOS с Framework Code

    Как изменить выбранную ячейку UITableViewController при возвращении к представлению таблицы?

    Почему Xcode 4.3.2 показывает белый значок при архивировании?

    UISplitViewController – бок о бок или наложение в портретной ориентации

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

    WatchOS2 Watch Connectivity по-прежнему требует наличия групп приложений в возможностях?

    Instagram Signed API Call из iOS

    Круговая анимация вокруг точки

    iPhone: Facebook FBDialog с предварительно заполненным сообщением

    Передача данных между вкладками UITabBar

    Давайте будем гением компьютера.