2010-03-16 1 views
3

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

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

  • Мы не можем сохранить состояние локально , так как пользователь может переустановить приложение
  • Мы не можем сохранить состояние на сервере и связать его с их устройством, потому что иногда пользователь изменяет устройству
  • У нас нет учетной записи пользователя, чтобы связать подписку, и мы не хотим вводить систему учетных записей пользователей, которая портит опыт.

Есть ли способ связать покупку с их учетной записью iTunes? Чтобы они были перенесены с ними при переустановке или изменении устройства?

+0

Как часто ваши пользователи переключают устройства внутри вашего 3-месячного окна? вероятно, не так часто ... может быть, просто укусить пулю и обработать запросы поддержки по электронной почте. – slf

ответ

1

Относительно ссылки на свою учетную запись на Facebook или Twitter? Затем вы превратили «создание учетной записи» в функцию социальной сети.

EDIT:

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

-1

Ваш вопрос странный, потому что покупка IS связана с учетной записью пользователя iTunes. Предположим, что пользователь удалит приложение со своего телефона и снова установит его обратно, он может вернуть все свои подписки (которые хранятся на стороне Apple в его учетной записи iTunes).

Этот механизм описан в разделе «Восстановление транзакций» в документе от яблока (и это до приложения, чтобы поддержать и реализовать его): http://developer.apple.com/iphone/library/documentation/NetworkingInternet/Conceptual/StoreKitGuide/MakingaPurchase/MakingaPurchase.html#//apple_ref/doc/uid/TP40008267-CH3-SW2

Вы сможете запросить ITunes счета из пользователя из вашего приложения и спросите: «Каковы в настоящее время покупаемые у этого продукта продукты?»

Затем, при восстановлении транзакций, вы возвращаете ссылку на все SKPaymentTransaction, по которым вы можете запросить transactionDate (как собственность). Это даст вам информацию WHEN пользователь купил у вас расходные материалы.

С его помощью вы можете также получить продукт, который был куплен с использованием aPaymentTransaction.payment.productIdentifier

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

+0

Из документа яблока - «Подписки и расходные материалы автоматически не восстанавливаются Store Kit. Чтобы восстановить эти продукты, вы должны записать транзакции на вашем собственном сервере, когда они будут приобретены, и предоставить собственный механизм для восстановления этих транзакций на устройства пользователя ». Ваш метод не будет работать с потребляемым. И если вы сделаете это нерасходуемым, они не смогут приобрести еще три метода после истечения срока их действия. – erotsppa

+0

:/Я не знал этого, спасибо за выделение. Это значительно усложняет расходуемые сценарии ... Это означает, что когда вы покупаете несколько раз тот же самый потребляемый продукт, что и при покупке приложения, вы не получите несколько экземпляров SKPaymentTransaction со стороны Apple? Это действительно любопытно :( – yonel

0

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

[NSHomeDirectory() stringByAppendingPathComponent:@"iTunesMetadata.plist"] 

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

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