Обработка переноса данных из «облегченной» в «профессиональную» версию приложения для iPhone - PullRequest
7 голосов
/ 03 октября 2009

Я близок к завершающей стадии разработки приложения для iPhone и буду выпускать его как в «облегченной» (поддерживаемой рекламой) версии, так и в «про» (без рекламы, вероятно, с дополнительными функциями в какой-то момент). .

Я следовал рекомендациям здесь и в других местах о создании нескольких целей и т. Д. И могу построить их без проблем.

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

Как я понимаю - и, пожалуйста, исправьте меня, если какие-либо из моих предположений неверны - потенциально это можно сделать двумя способами:

  1. Дайте каждому приложению свой идентификатор Bundle (т. Е. Com.companyname.fooapplite и com.companyname.fooapppro). Это приведет к тому, что оба будут рассматриваться как совершенно отдельные объекты. Данные не переносятся автоматически, если пользователь переходит от одного к другому, и оба вполне могут быть установлены на одном iPhone одновременно.

  2. Присвойте каждому приложению один и тот же идентификатор пакета (т. Е. Com.companyname.fooapp), чтобы они рассматривались как одно и то же приложение. Облегченная версия приложения будет перезаписана профессиональной версией, если они загрузят и установят ее. Данные из облегченной версии поддерживаются в профессиональной версии.

Последнее кажется мне идеальным - я не могу представить, чтобы кто-то хотел сохранить облегченную версию после того, как он только что купил профессиональную версию - но это поднимает несколько вопросов:

  • Допускает ли Apple даже вариант № 2?

  • Приведет ли вариант 2 к любой глупости, о которой я должен знать, т.е. две версии каким-то образом наступают друг на друга.

  • Если это не разрешено, существует ли рекомендуемая практика переноса данных из двух основных приложений? Мне известен StoreKit, но он не поддерживается бесплатными приложениями.

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

* * 1036 спасибо * * 1037
  • Jeff

Ответы [ 2 ]

3 голосов
/ 03 октября 2009

Еще один вариант - обмен данными из Lite в полную версию через URL. Зарегистрируйте URL-адрес myFullApp в полной версии, и приложение Lite представит опцию обновления, при которой этот URL-адрес вызывает различные данные, которые вы хотите обменять, закодированные в нем.

Это требует, чтобы пользователь запустил вашу версию Lite и нажал кнопку, но это тоже довольно просто.

1 голос
/ 03 октября 2009

Я сам не пробовал , но третий способ обмена небольшими объемами данных - использовать API цепочки для ключей. Приложения, которые совместно используют заглушку идентификатора - com.companyname.foo в качестве родительского для com.companyname.foo.fooapp и com.companyname.foo.fooapplite - могут предположительно выполнять запись в цепочку для ключей из одного приложения и считывать из другого. Не видел, чтобы это было сделано, но многие люди утверждают, что это возможно. И в любом случае цепочка для ключей, вероятно, является хорошим местом для хранения таких вещей, как учетные данные для аутентификации.

Вариант 4: приложение lite хранит некоторые пользовательские данные на сервере, которым вы управляете, и полное приложение получает их оттуда, но при таком подходе возникают всевозможные проблемы.

...