SKPaymentQueue
SKPaymentQueue
класс предоставляет очереди платежных операций, которые будут обработаны App Store. Очередь платежа связывается с App Store и представляет пользовательский интерфейс так, чтобы пользователь мог разрешить оплату. Содержание очереди является персистентным между запусками Вашего приложения.
Для обработки платежа сначала присоедините по крайней мере один объект наблюдателя к очереди. Затем добавьте объект платежа для элемента, который пользователь хочет купить. Каждый раз, когда Вы добавляете объект платежа, очередь создает объект транзакции обработать тот платеж и ставит в очередь его, чтобы быть обработанной. После того, как платеж выполняется, очередь обновляет объект транзакции и затем вызывает любые объекты наблюдателя обеспечить их обновленная транзакция. Ваш наблюдатель должен обработать транзакцию и затем удалить ее из очереди.
Точный механизм, который Вы используете для обработки обработанной транзакции, зависит от проекта приложения и купленного продукта. Вот несколько типичных примеров:
Если продуктом является функция, уже встроенная в Ваше приложение, то обработать транзакцию, Ваше приложение активировало бы опцию.
Если бы продукт включает загружаемое содержание, предоставленное App Store, Ваше приложение получило бы
SKDownload
объекты от транзакции и просят, чтобы очередь платежа загрузила их. Вы обеспечили бы фактические файлы содержания, которые будут подаваться App Store Подключению iTunes, при создании информации о продукте.Если продукт представляет загружаемое содержание, предоставленное Вашим собственным сервером, Ваше приложение могло бы открыть сетевое соединение с Вашим сервером и загрузить содержание оттуда.
Для получения дополнительной информации о разработке части обработки платежей Вашего приложения см. Руководство по программированию Закупки В приложении.
Оператор импорта
Swift
import StoreKit
Objective C
@import StoreKit;
Доступность
Доступный в OS X v10.7 и позже.
-
Возвраты, разрешают ли пользователю произвести платежи.
Объявление
Swift
class func canMakePayments() -> Bool
Objective C
+ (BOOL)canMakePayments
Возвращаемое значение
YES
true
если пользователю разрешают разрешить оплату.NO
false
если у них нет разрешения.Обсуждение
IPhone может быть ограничен в доступе к Apple App Store. Например, родители могут ограничить свою детскую возможность купить дополнительное содержание. Ваше приложение должно подтвердить, что пользователю разрешают разрешить оплаты прежде, чем добавить платеж очереди. Когда пользователю не разрешают разрешить оплаты, Ваше приложение может также хотеть изменить свое поведение или появление.
Оператор импорта
Objective C
@import StoreKit;
Swift
import StoreKit
Доступность
Доступный в OS X v10.7 и позже.
-
Возвращает одноэлементный экземпляр очереди платежа.
Объявление
Swift
class func defaultQueue() -> SKPaymentQueue!
Objective C
+ (SKPaymentQueue *)defaultQueue
Возвращаемое значение
Совместно используемая очередь платежа.
Обсуждение
Приложения не создают очередь платежа. Вместо этого они получают одноэлементную очередь путем вызова этого метода класса.
Специальные замечания
Очередь платежа не доступна в Средстве моделирования. Попытка получить очередь платежа регистрирует предупреждение.
Оператор импорта
Objective C
@import StoreKit;
Swift
import StoreKit
Доступность
Доступный в OS X v10.7 и позже.
-
Добавляет наблюдатель к очереди платежа.
Объявление
Swift
func addTransactionObserver(_
observer
: SKPaymentTransactionObserver!)Objective C
- (void)addTransactionObserver:(id<SKPaymentTransactionObserver>)
observer
Параметры
observer
Наблюдатель, чтобы добавить к очереди.
Обсуждение
Ваше приложение должно добавить наблюдателя к очереди платежа во время инициализации приложения. Если нет никаких наблюдателей, присоединенных к очереди, очередь платежа не синхронизирует свой список отложенных транзакций с Apple App Store, потому что нет никакого наблюдателя для ответа на обновленные транзакции.
Если приложение выходит, когда транзакции все еще обрабатываются, те транзакции не потеряны. В следующий раз запуски приложения, очередь платежа продолжит обрабатывать транзакции. Ваше приложение должно всегда ожидать быть уведомленным относительно завершенных транзакций.
Если больше чем один наблюдатель транзакции привязан к очереди платежа, никакие гарантии не сделаны относительно порядка, они будут призваны. Безопасно для многократных наблюдателей вызвать
finishTransaction:
, но не рекомендуемый. Рекомендуется использовать единственного наблюдателя, чтобы обработать и закончить транзакцию.Оператор импорта
Objective C
@import StoreKit;
Swift
import StoreKit
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Удаляет наблюдателя из очереди платежа.
Объявление
Swift
func removeTransactionObserver(_
observer
: SKPaymentTransactionObserver!)Objective C
- (void)removeTransactionObserver:(id<SKPaymentTransactionObserver>)
observer
Параметры
observer
Наблюдатель для удаления.
Обсуждение
Если нет никаких наблюдателей, присоединенных к очереди, очередь платежа не синхронизирует свой список отложенных транзакций с Apple App Store, потому что нет никакого наблюдателя для ответа на обновленные транзакции.
Оператор импорта
Objective C
@import StoreKit;
Swift
import StoreKit
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
транзакции транзакции
СвойствоВозвращает массив отложенных транзакций. (только для чтения)
Объявление
Swift
var transactions: [AnyObject]! { get }
Objective C
@property(readonly) NSArray *transactions
Обсуждение
Когда нет никаких наблюдателей, присоединенных к очереди платежа, значение этого свойства не определено.
Оператор импорта
Objective C
@import StoreKit;
Swift
import StoreKit
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Добавляет платежное требование к очереди.
Объявление
Swift
func addPayment(_
payment
: SKPayment!)Objective C
- (void)addPayment:(SKPayment *)
payment
Параметры
payment
Платежное требование.
Обсуждение
Приложение должно всегда иметь по крайней мере одного наблюдателя очереди платежа прежде, чем добавить платежные требования.
Платежному требованию нужно было зарегистрировать идентификатор продукта в Apple App Store и количестве, больше, чем
0
. Если любое свойство недопустимо,addPayment:
выдает исключение.Когда платежное требование добавляется к очереди, процессы очереди платежа, запрашивающие с Apple App Store и устраивающие платеж от пользователя. Когда та транзакция завершена или если отказ происходит, очередь платежа отправляет
SKPaymentTransaction
объект, инкапсулирующий запрос всем наблюдателям транзакции.Оператор импорта
Objective C
@import StoreKit;
Swift
import StoreKit
Доступность
Доступный в OS X v10.7 и позже.
-
Завершает отложенную транзакцию.
Объявление
Swift
func finishTransaction(_
transaction
: SKPaymentTransaction!)Objective C
- (void)finishTransaction:(SKPaymentTransaction *)
transaction
Параметры
transaction
Транзакция для окончания.
Обсуждение
Ваше приложение должно вызвать этот метод от наблюдателя транзакции, получившего уведомление от очереди платежа. Вызов
finishTransaction:
на транзакции удаляет его из очереди. Ваше приложение должно вызватьfinishTransaction:
только после того, как это успешно обработало транзакцию и разблокировало функциональность, купленную пользователем.Вызов
finishTransaction:
на транзакции, которая находится вSKPaymentTransactionStatePurchasing
состояние выдает исключение.Оператор импорта
Objective C
@import StoreKit;
Swift
import StoreKit
Доступность
Доступный в OS X v10.7 и позже.
См. также
-
Просит очередь платежа восстанавливать ранее завершенные покупки.
Объявление
Swift
func restoreCompletedTransactions()
Objective C
- (void)restoreCompletedTransactions
Обсуждение
Ваше приложение вызывает этот метод для восстановления транзакций, ранее законченных так, чтобы можно было обработать их снова. Например, Ваше приложение использовало бы это, чтобы позволить пользователю разблокировать ранее купленное содержание на новое устройство.
При создании нового продукта, который будет продан в хранилище, Вы выбираете, может ли тот продукт быть восстановлен или нет. См. Руководство по программированию Закупки В приложении для получения дополнительной информации.
Очередь платежа поставит новую транзакцию для каждой ранее завершенной транзакции, которая может быть восстановлена. Каждая транзакция включает копию исходной транзакции.
После того, как транзакции поставлены, очередь платежа вызывает наблюдателя
paymentQueueRestoreCompletedTransactionsFinished:
метод. Если ошибка произошла при восстановлении транзакций, наблюдатель будет уведомлен черезpaymentQueue:restoreCompletedTransactionsFailedWithError:
метод.Оператор импорта
Objective C
@import StoreKit;
Swift
import StoreKit
Доступность
Доступный в OS X v10.7 и позже.
-
restoreCompletedTransactionsWithApplicationUsername (_:) - restoreCompletedTransactionsWithApplicationUsername:
Просит очередь платежа восстанавливать ранее завершенные покупки, обеспечивая непрозрачный идентификатор для учетной записи пользователя.
Объявление
Swift
func restoreCompletedTransactionsWithApplicationUsername(_
username
: String!)Objective C
- (void)restoreCompletedTransactionsWithApplicationUsername:(NSString *)
username
Параметры
username
Непрозрачный идентификатор для учетной записи пользователя в Вашей системе.
Оператор импорта
Objective C
@import StoreKit;
Swift
import StoreKit
Доступность
Доступный в OS X v10.9 и позже.
См. также
-
Добавляет ряд загрузок к списку загрузки.
Объявление
Swift
func startDownloads(_
downloads
: [AnyObject]!)Objective C
- (void)startDownloads:(NSArray *)
downloads
Параметры
downloads
Массив
SKDownload
объекты начать загружать.Обсуждение
Для объекта загрузки, который будет поставлен в очередь, это должно быть связано с транзакцией, успешно купленной, но еще не законченной.
Оператор импорта
Objective C
@import StoreKit;
Swift
import StoreKit
Доступность
Доступный в OS X v10.8 и позже.
-
Удаляет ряд загрузок со списка загрузки.
Объявление
Swift
func cancelDownloads(_
downloads
: [AnyObject]!)Objective C
- (void)cancelDownloads:(NSArray *)
downloads
Параметры
downloads
Массив
SKDownload
объекты отменить.Оператор импорта
Objective C
@import StoreKit;
Swift
import StoreKit
Доступность
Доступный в OS X v10.8 и позже.
-
Паузы ряд загрузок.
Объявление
Swift
func pauseDownloads(_
downloads
: [AnyObject]!)Objective C
- (void)pauseDownloads:(NSArray *)
downloads
Параметры
downloads
Массив
SKDownload
объекты приостановиться.Оператор импорта
Objective C
@import StoreKit;
Swift
import StoreKit
Доступность
Доступный в OS X v10.8 и позже.
-
Резюме ряд загрузок.
Объявление
Swift
func resumeDownloads(_
downloads
: [AnyObject]!)Objective C
- (void)resumeDownloads:(NSArray *)
downloads
Параметры
downloads
Массив
SKDownload
объекты возобновиться.Оператор импорта
Objective C
@import StoreKit;
Swift
import StoreKit
Доступность
Доступный в OS X v10.8 и позже.