2013-07-12 2 views
6

Рецензент AppStore требует от нас приобретения Non-renewing subscriptions Тип не обязывает пользователя регистрироваться. Он также означает, что пользователь не зарегистрирован, он также может купить Non-renewing subscriptions типВосстановить транзакции для не возобновляемых подписки без регистрации

И требуется документ Apple Document Non-renewing subscriptions необходимо восстановить. Он сказал:

Номера возобновляя подписки и потребляемые продукты не автоматически восстанавливается магазин Kit. Однако возобновление подписки должно быть . Чтобы восстановить эти продукты, вы должны записывать транзакции на своем собственном сервере, когда они приобретаются, и предоставить свой собственный механизм для восстановления этих транзакций на устройствах пользователя .

Так что, когда регистр пользователя, я дам пользователю уникальный идентификатор, а он может получить USERID с его именем пользователя и паролем, так что я могу поделиться информацией пользователя для различных Ios устройства, и я могу восстановить операции, потому что они имеют уникальный userId.

Но проблема заключается в следующем: когда пользователь не зарегистрируется, мой сервер также предоставит им уникальный userId, пользователь без регистрации сохранит userId на .plist. Они также могут восстанавливать транзакции. Но когда он удаляет мое приложение, а затем загружается один раз, userId теряется, поэтому он не может восстанавливать транзакции. Он будет обычным пользователем по умолчанию.

ли AppStore отклонит мое приложение по причине:

Невозможно вернуть операции, не связанные с обновлением подписки без регистрации, которые удалить приложение, прежде чем восстановить

Если AppStore отвергнуты, как исправить это, THX все.

+0

Меня беспокоит идея предоставить пользователю userId или сохранить его в .plist. Что делать, если злоумышленник публикует этот пользователь в Интернете? Это сломает вашу безопасность, да? (Информация .plist доступна через такие программы, как iExplorer). –

+0

@ChrisPrince Он может размещать свой userId онлайн, но наш сервер имеет список транзакций. Одна подписка (которая не используется) может быть успешно восстановлена ​​только один раз. Если он отправляется другим, один из других может успешно восстановиться, и он не может восстановить. Так что это не нарушит мою безопасность. –

+0

@ChrisPrince Обратите внимание, что: транзакции важны. UserId означает только восстановление для кого. Некоторые хакеры крадут ваши транзакции, а затем продают транзакции другим пользователям. –

ответ

4

Я отправляю свое приложение в appStore.

Я восстанавливаю транзакции для подписчиков, не обновляющих подписку, которые регистрируются или регистрируются.

Я не восстанавливаю транзакции для подписчиков без продления подписки, которые не «регистрируются» и «удаляют мое приложение».

Мое приложение одобрено

+0

Это означает, что они могут принять приложение, которое не восстанавливает покупки, если iCloud не вошел в систему. что вы думаете? – hasan83

+0

@hasan Мое приложение поддерживает iOS4.3 +, поэтому iCloud отсутствует. И я не нахожу идеальный способ «восстановить транзакции для немедленного продления подписки без регистрации, которые удаляют приложение до восстановления». Я буду восстанавливать транзакции для пользователей входа и восстанавливать транзакции для гостей, которые не удаляют мое приложение. –

+0

Это полезно знать. , Я следую аналогичной стратегии для своего приложения, но еще не представил ее. –

1
  • Регистрация должна быть необязательными для элементов невозобновляемых InApp.
  • Вы можете сообщить им, что если вы хотите использовать на нескольких устройствах, вам необходимо зарегистрироваться и войти.
  • Во время регистрации персональная информация, такая как электронная почта и мобильный нет, не обязательна, и вам нужно объяснить их конкретно, почему вы сохранили электронную почту в регистрации (например, как восстановление пароля).
  • Как и предыдущий комментарий, если inapp для невозобновляемого элемента не так дорого, они могут принять приложение. Но если, inapp стоит дорого, они не позволят вам нарушить какие-либо их правила.

Примечание: Вы можете использовать механизм для использования UUID и хранить его в цепочке ключей.Если вы переустановите приложение, вы можете снова получить его из брелка и использовать тот же UUID, вы можете управлять истечением срока на вашем сервере.

1

компании Apple предлагает использовать ICloud сохраняться данные о покупке:

#if USE_ICLOUD_STORAGE 
NSUbiquitousKeyValueStore *storage = [NSUbiquitousKeyValueStore defaultStore]; 
#else 
NSUserDefaults *storage = [NSUserDefaults standardUserDefaults]; 
#endif 

NSData *newReceipt = transaction.transactionReceipt; 
NSArray *savedReceipts = [storage arrayForKey:@"receipts"]; 
if (!receipts) { 
    // Storing the first receipt 
    [storage setObject:@[newReceipt] forKey:@"receipts"]; 
} else { 
    // Adding another receipt 
    NSArray *updatedReceipts = [savedReceipts arrayByAddingObject:newReceipt]; 
    [storage setObject:updatedReceipts forKey:@"receipts"]; 
} 

[storage synchronize]; 

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

+0

transactionReceipt устарел. – user965972

Смежные вопросы