in app provisioning что это

Entitlement Key Reference

Apple Pay and PassKit Entitlements

Use these keys to enable in-app payments using Apple Pay, or to allow your app to access passes from the PassKit library. Set these entitlements using Xcode.

Apple Pay and PassKit Entitlement Keys

Access to the listed passes from the PassKit library.

Prevents the display of the Apple Pay passes when it detects a compatible reader.

In-app provisioning of payment cards.

Enabling In-App Payments

To enable in-app payments, use Xcode’s Capabilities pane to turn on Apple Pay, and select the merchant IDs you want to use. This sets the com.apple.developer.in-app-payments key.

The value for this key is an array of merchant IDs.

Enabling Access to Passes

To access passes in your app, use Xcode’s Capabilities pane to turn on Wallet. If your provisioning profile is associated with multiple pass type identifiers, you can specify which of the identifiers your app can interact with. This sets the com.apple.developer.pass-type-identifiers key.

Suppressing the Display of Apple Pay Passes

Use this entitlement to keep your app in the foreground when operating near NFC or other RF readers. This entitlement enables the requestAutomaticPassPresentationSuppressionWithResponseHandler: method.

Enabling In-App Provisioning of Payment Cards

Use this entitlement to enable the in-app provisioning of payment cards. This entitlement allows you to initialize and present a PKAddPaymentPassViewController object.

Copyright © 2017 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2017-03-27

Источник

iPhone разработка: Интегрируем In-App Purchases

In-App Purchases — это простой и удобный механизм для организации продаж своих приложений или дополнительных фич непосредственно из своего приложения. In-App Purchases легко встраивается и открывает для Вас новый канал продаж. Взаимодействие с App Store осуществляется с помощью StoreKit.framework, который поставляется вместе с SDK, начиная с версии 3.0.

Общая информация

Non-Consumable — непотребляемый тип. Purchase покупается только один раз. Его обычно используют для разблокировки новых тем, дополнительных уровней и т.п.

Subscription — подписка на что-либо. Например, Вы можете написать iPhone-приложение для Web-сервиса, в котором есть Premium аккаунт, открывающий дополнительные возможности. С помощью Subscription Вы сможете аккаунт активировать, скажем, на месяц или на год.

Реализация

Работу встроенной модели In-App Purchases я продемонстрирую на тестовом примере AppPurchasesExample. Это небольшое iPhone-приложение с 3 окнами. Первое (оно же главное) окно будет доступно пользователю по-умолчанию. Это окно будет содержать информацию о двух других окнах, разблокировать которые можно только за деньги.

Шаг 1. Создание App ID

Заходим на iPhone Developer Program Portal и открываем вкладку App IDs:

in app provisioning что это

В правом верхнем углу экрана нажимаем New App ID. Затем вводим информацию о приложении. Для своего примера я заполнил форму так:

in app provisioning что это

Для создания Bundle Identifier Apple рекомендует использовать нотацию Reverse DNS, что гарантирует уникальность Вашего Identifier и избавит Вас от дальнейших проблем при публикации приложения. Очень Важно не использовать символ ‘*’ в Bundle Identifier. Если ввести ‘com.wordpress.indiedevelop.*’, то In-App Purchases работать не будет.

Далее необходимо включить In App Purchases для App ID. В списке App IDs, напротив нужного Bundle Identifier в графе Action следует нажать Configure. Появится форма Configure App ID, на которой необходимо включить checkBox ‘Enable In App Purchase’.

in app provisioning что это

Шаг 2. Создание Development профиля

in app provisioning что это

Шаг 3. Создание приложения в iTunes Connect

Шаг 4. Создание In-App Purchases в iTunes Connect

Для тестового приложения я создал два In-App продукта с Product Id ‘com.wordpress.indiedevelop.InAppPurchasesExample.f1’ и ‘com.wordpress.indiedevelop.InAppPurchasesExample.f2’. Обе фичи с типом Non-Consumables.

Шаг 5. Создание тестового пользователя

in app provisioning что это

Важный момент. Если у Вас не закончен контракт с Apple, тогда In-App Purchase работать у Вас не будет. Для того, чтобы закончить контракт, необходимо указать Contact Info, Bank Info и Tax Info.

Шаг 6. Программирование

Для своего тестового примера я создал каркас проекта и User Interface:

in app provisioning что это

Для работы с App Store я рекомендую использовать MKStoreKit, разработанный в 2009 году разработчиком Кумаром (Mugunth Kumar). Данный набор классов значительно облегчит работу со StoreKit. Кроме MKStoreKit, в проект необходимо добавить StoreKit.framework.

В своем примере я использую слегка модернизированную первую весрию MKStoreKit. Для удобства я добавил к классу MKStoreManager делегат следующего вида:

@protocol MKStoreKitDelegate @optional
— ( void )productAPurchased;
— ( void )productBPurchased;
— ( void )failed;
@end

Делегату посылается сообщение productAPurchased когда куплена фича 1, productBPurchased — когда куплена фича 2 и failed — когда пользователь либо отменил покупку, либо покупка не прошла.

Класс-Singleton MKStoreManager является основным в MKStoreKit. Так выглядит его объявление:

// делегат
@property (nonatomic, retain) id delegate ;
// продукты, доступные для покупки
@property (nonatomic, retain) NSMutableArray *purchasableObjects;

// фабричный метод для Singleton
+ (MKStoreManager*)sharedManager;

// методы для покупки фич
— ( void ) buyFeatureA;
— ( void ) buyFeatureB;

// методы позволяют узнать куплена ли фича
+ (BOOL) featureAPurchased;
+ (BOOL) featureBPurchased;
.
@end

Рассмотрим использование класса на моем тестовом примере.

Сначала в файле MKStoreManager.m я прописал Product ID своих фич:

static NSString *featureAId = @»com.wordpress.indiedevelop.InAppPurchasesExample.f1″ ;
static NSString *featureBId = @»com.wordpress.indiedevelop.InAppPurchasesExample.f2″ ;

Также нужно проверить были ли куплены фичи программы. Основной класс примера унаследован от UIViewController, поэтому код проверки целесообразно встроить в метод viewDidLoad:

[MKStoreManager sharedManager]. delegate = self; // назначаем делагата для объекта MKStoreManager

if ([MKStoreManager featureAPurchased]) // если куплена фича 1
<
feature1Button.hidden = YES; // скрываем кнопку ‘Купить фичу 1’
seeFeature1Button.hidden = NO; // показываем кнопку ‘Перейти на фичу 1’
>

if ([MKStoreManager featureBPurchased]) // если куплена фича 2
<
feature2Button.hidden = YES; // скрываем кнопку ‘Купить фичу 2’
seeFeature2Button.hidden = NO; // показываем кнопку ‘Перейти на фичу 2’
>
>

Внутри MKStoreKit информация о том, куплен ли продукт сохраняется через NSUserDefaults, поэтому при удалении приложения информация сбрасывается. Однако, пользователь не будет покупать фичи два раза, поскольку StoreKit откроет доступ к фиче бесплатно.

Дальше нужно реализовать методы ‘Купить’. Они привязаны к событию TouchUpInside соотвествующих кнопок:

-(IBAction)feature1ButtonPressed
<
[self showLockView]; // показываем пользователю, что происходит загрузка
[[MKStoreManager sharedManager] buyFeatureA]; // посылаем сообщение магазину ‘Купить фичу 1’
>

-(IBAction)feature2ButtonPressed
<
[self showLockView]; // показываем пользователю, что происходит загрузка
[[MKStoreManager sharedManager] buyFeatureB]; // посылаем сообщение магазину ‘Купить фичу 2’
>

Далее я реализовал методы делегата MKStoreKitDelegate:

// фича 1 куплена
— ( void )productAPurchased
<
[self hideLockView]; // скрываем отображение загрузки
feature1Button.hidden = YES; // скрываем кнопку ‘Купить’
seeFeature1Button.hidden = NO; // показываем кнопку ‘Перейти’
>

// фича 2 куплена
— ( void )productBPurchased
<
[self hideLockView]; // скрываем отображение загрузки
feature2Button.hidden = YES; // скрываем кнопку ‘Купить’
seeFeature2Button.hidden = NO; // показываем кнопку ‘Перейти’
>

// покупка не прошла, либо была отменена
— ( void )failed
<
[self hideLockView]; // скрываем отображение загрузки
>

Новые фичи реализованы в виде отдельных UIView под управлением UIViewController. Переход на новые фичи я реализовал с помощь UINavigationController:

// перейти на фичу 1
-(IBAction)seeFeature1
<
[self.navigationController pushViewController:feature1ViewController animated:YES];
>

// перейти на фичу 2
-(IBAction)seeFeature2
<
[self.navigationController pushViewController:feature2ViewController animated:YES];
>

Также при манипуляции с магазином можно добавить проверку на его доступность. Это делается так:

if ([SKPaymentQueue canMakePayments])
<
. // Отобразить магазин пользователю
>
else
<
. // Уведомить пользователя, что Purchases недоступны
>

Как видите все достаточно просто. Остается скопилировать и тестировать 🙂

Шаг 7. Тестирование

Тестовый пример InAppPurchasesExample

В результате у меня получилось приложение, которое может разблокировать два дополнительных окна. Это приложение можно использовать в качестве примера для создания своих In-App Purchase проектов.

Я очень надеюсь, что Вам помог этот пост. Если у Вас есть Вопросы, пожалуйста, задавайте. Я с удовольствием на них отвечу.

Источник

Выкладываем приложение в App Store. Даже если вы не разработчик

in app provisioning что это

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

Для того чтобы выложить приложение в App Store, потребуется оплаченный аккаунт разработчика, среда разработки XCode и исходный код вашего приложения. Разобьем процесс на четыре этапа:

Настройка аккаунта

Все приложения перед выгрузкой в App Store должны быть подписаны сертификатом разработчика. Это нужно, чтобы пользователи App Store были уверены, что скачивают конкретное приложение от конкретного разработчика, а не подделку от чужого имени. Процедура подписывания (code signing) приложения позволяет операционной системе узнать, кто является разработчиком. И удостовериться в том, что приложение не было изменено с момента сборки. Точнее, с того момента, как разработчик его подписал. В этой процедуре участвуют три объекта: сертификат разработчика, AppID и Provisioning profile.

Сертификат

Сертификат представляет собой пару ключей асимметричного шифрования: приватный и публичный. В процессе сборки XCode формирует цифровую подпись для сборки на основании данных приватного ключа. Проверить подпись можно с помощью публичного ключа, который доступен и для Apple, который этот сертификат выдала.

Одного сертификата достаточно для выкладки неограниченного количества приложений.

Чтобы создать сертификат, нужно:

in app provisioning что это

Сохраните сгенерированный сертификат на компьютер, откройте его (дважды кликнув). Сертификат будет помещен в системное хранилище и доступен для XCode.

AppID

Это уникальный строковый идентификатор приложения среди всех приложений. Он нужен для однозначной идентификации во всех системах: iTunes Connect, App Store и пр. Он состоит из двух частей: TeamID и BundleID. TeamID — идентификатор разработчика, выдается Apple на этапе регистрации аккаунта разработчика и не меняется. BundleID задается разработчиком при регистрации приложения в аккаунте.

in app provisioning что это

Provisioning profile

Это профиль, который однозначно связывает AppID и сертификат разработчика (публичный ключ сертификата). В случае development provisioning profile он также содержит UDID всех устройств, на которых возможен запуск приложения.

Сохраните сгенерированный профайл на компьютер, откройте его, дважды кликнув. Теперь сертификат доступен для XCode.

Оформление приложения для магазина

Теперь нужно добавить приложение в iTunes Connect.
Переходим на https://itunesconnect.apple.com в раздел MyApps. Чтобы добавить приложение, нажмите плюсик слева вверху:

in app provisioning что это

Заполняем открывшуюся форму:

in app provisioning что это

Если все заполнено правильно, попадаем на страницу приложения.

in app provisioning что это

На вкладке слева «Pricing and Availability» заполняем информацию о стоимости приложения в сторе. На вкладке слева с номером версии заполняем маркетинговую информацию:

О том, как подготовить маркетинговую информацию, мы рассказывали в предыдущей статье.

Также есть секция для того, чтобы можно было указать конкретную сборку, которую отправлять на ревью, а затем и в стор. Выбор недоступен до тех пор, пока мы не загрузили в iTunes Connect ни одной сборки приложения. Мы вернемся к этой секции позже:

in app provisioning что это

Чтобы сохранить внесенные изменения, используйте кнопку Save наверху:

in app provisioning что это

Настройка проекта, сборка и выгрузка

Откройте проект вашего приложения в XCode, перейдите к настройкам проекта. Необходимо, чтобы Bundle Identifier совпадал с BundleID, который вы указали при создании AppID. Также необходимо отключить функцию автоматического управления подписыванием в XCode. В выпадающем списке Provisioning Profile выберите тот, который недавно создали.

in app provisioning что это

Обратите внимание: без всех необходимых иконок (в том числе иконка для магазина со стороной 1024 точки) сборка приложения не пройдет автоматическую проверку в iTunes Connect.

Теперь проект можно собрать и отправить в iTunes Connect. Для этого нужно нажать меню Product — Archive. По итогу сборки будет показано окно органайзера XCode, нажмите там кнопку «Upload To App Store»:

in app provisioning что это

Открывается окно настроек выгрузки в App Store. Подробнее про bitcode, symbols stripping. Оставляем настройки без изменений.

in app provisioning что это

На следующем шаге нужно выбрать provisioning profile из выпадающего списка подходящих:

in app provisioning что это

Затем XCode подготовит архив для выгрузки в iTunes Connect. На этом экране обратите внимание на те параметры, что мы установили. Нажмите Upload.

in app provisioning что это

В зависимости от скорости соединения нужно будет подождать некоторое время. Если все в порядке, XCode сообщит об успешном завершении выгрузки в iTunes Connect. Можно переходить к последнему этапу.

in app provisioning что это

Отправка на ревью

В iTunes Connect на вкладке Activity можно увидеть отправленную сборку. Для проектов на Swift автоматическая проверка сборки занимает примерно полчаса. До тех пор сборка будет со статусом Processing:

in app provisioning что это

После окончания проверки сборка доступна для выбора на странице информации о версии приложения:

in app provisioning что это

in app provisioning что это

После этого у приложения в iTunes Connect появится иконка. Сохраните изменения. Теперь можно отправить сборку на ревью.

in app provisioning что это

Готово! Вы сделали все, что могли. Ждите ответа в течение нескольких дней. Не забудьте, что с 23 по 27 декабря iTunes Connect на каникулах. Разработчики не смогут обновлять и добавлять новые приложения в App Store и изменять ценники. Все остальные функции iTunes Connect будут доступны.

Источник

Распространение приложения под iOS внутри компании (Enterprise Distribute iOS App in-house)

(Осторожно, под катом трафик)
Подготовка и распространение приложения IOS внутри компании весьма непростая задача, особенно когда приложение написано на Windows с использованием Visual studio, а большинство туториалов в интернете описывают исключительно MacOS с использованием Xcode. Однако после часов сражения с детищем Apple, нам удалось свершить казалось бы невозможное, а именно: скрестить жирафа с носорогом собрать IOS приложение на Xamarin в архив Xcode, сразу на MacOS, после получить нужные файлы для распространения, и в завершении создать ссылку, по которой будет распространяться приложение.

Да, на слух вроде не очень сложно. Однако когда дело касается разработки приложений под устройства Apple, всё становится в несколько раз непонятней и сложней. И после триумфальной, но нелёгкой победы, нам захотелось оставить свой след в истории, написав сей туториал.

in app provisioning что это

1 Шаг. Создание сертификата.

1. Сперва, на Mac, нужно создать запрос для создания сертификата. Для этого нужно открыть keychain access, например, через поиск:

in app provisioning что это

in app provisioning что это

in app provisioning что это

in app provisioning что это

3. В появившемся окне заполняем поля “User Email Address” – свою электронную почту, и “Common Name” – имя ключа. А также выбираем пункт “Saved to disk”, чтобы сохранить файл запроса на компьютер. И нажимаем кнопку “Continue”:

in app provisioning что это

4. Далее появится окошко, в котором нужно указать название файла запроса и выбор пути для сохранения файла. Вносим нужные изменения и сохраняем:

in app provisioning что это

5. После успешного сохранения появится следующее окно. Нажимаем “Done”:

in app provisioning что это

6. После мы можем увидеть, что создался файл запроса в месте сохранения (в данном примере на рабочем столе). Или мы можем увидеть созданный ключ в списке ключей в “keychain access”:

in app provisioning что это

in app provisioning что это

7. Далее нам надо создать сертификат, это мы сможем сделать на сайте Apple для разработчиков, войдя в свой аккаунт:

in app provisioning что это

in app provisioning что это

in app provisioning что это

8. После успешного входа в аккаунт мы переходим в “Certificates, IDs & Profiles”, так же на странице сертификатов нужно убедиться, что выбрано “IOS, tvOS, watchOS”:

in app provisioning что это

in app provisioning что это

9. Далее на странице, в разделе “Certificates”, нужно выбрать “Production”:

in app provisioning что это

10. На странице нажимаем на кнопку с изображением “+”, чтобы создать сертификат. Появится страничка, на которой надо выбрать тип создаваемого сертификата:

in app provisioning что это

in app provisioning что это

11. В данном примере нас интересует метод дистрибьюции In-House, поэтому типом сертификата нужно выбрать “In-House and Ad Hoc”. После нажать кнопку “Continue”:

in app provisioning что это

12. После мы перейдём к следующей странице создания сертификата на которой будет описано как создать запрос на MacOS для сертификата. Мы уже создали этот запрос в предыдущих пунктах. Нажимаем кнопку “Continue”:

in app provisioning что это

13. На следующем этапе вам потребуется загрузить файл запроса, который мы создали ранее на рабочем столе. После успешной загрузки нажмите “Continue”:

in app provisioning что это

in app provisioning что это

14. После произойдёт генерация сертификата, и на следующей странице его можно будет скачать на компьютер:

in app provisioning что это

15. Скачиваем сертификат, в данном примере на рабочий стол. Так же мы можем увидеть созданный сертификат на сайте:

in app provisioning что это

in app provisioning что это

Как мы можем видеть, по итогу мы успешно получили сертификат. Следующим шагом будет создание ID приложения.

2 Шаг. Создание Apps ID.

На предыдущем шаге мы успешно создали сертификат, теперь нам нужно создать Apps ID. Для этого нужно:

1. На сайте Apple для разработчиков, в своём аккаунте перейти сперва в “Certificates, IDs & Profiles”, так же на странице сертификатов нужно убедиться, что выбрано “IOS, tvOS, watchOS”:

in app provisioning что это

in app provisioning что это

2. Далее на странице, в разделе “Identifiers”, нужно выбрать “App IDs”:

in app provisioning что это

in app provisioning что это

3. На странице нажимаем на кнопку с изображением “+”, чтобы создать App ID. Появится страничка, на которой надо выбрать настройки создаваемого ID. Настройки ID индивидуальны для вашего приложения, единственное важное уточнение – в графе App ID Suffix нужно выбрать Explicit App ID:

in app provisioning что это

in app provisioning что это

4. После создания App ID, его можно увидеть на сайте:

in app provisioning что это

По итогу двух шагов, мы успешно получили сертификат и создали App ID. Далее нам надо при помощи созданного сертификата создать Provisioning Profiles. И это приводит нас к следующему шагу “3 Шаг. Создание Provisioning Profiles”.

3 Шаг. Создание Provisioning Profiles.

На предыдущем шаге мы успешно создали сертификат, теперь нам нужно с его помощью создать Provisioning Profiles. Для этого нужно:

1. На сайте Apple для разработчиков, в своём аккаунте перейти сперва в “Certificates, IDs & Profiles”, так же на странице сертификатов нужно убедиться, что выбрано “IOS, tvOS, watchOS”:

in app provisioning что это

in app provisioning что это

2. Далее на странице, в разделе “Provisioning Profiles”, нужно выбрать “ Distribution”:

in app provisioning что это

in app provisioning что это

3. На странице нажимаем на кнопку с изображением “+”, чтобы создать Provisioning Profiles. Появится страничка, на которой надо выбрать тип создаваемого профайла:

in app provisioning что это

4. В данном примере нас интересует In-House метод дестрибьюции, соответственно выбираем тип профайла “In House” и нажимаем на кнопку “Continue”:

in app provisioning что это

5. На следующей странице нужно выбрать ранее созданный, на шаге 2, App ID:

in app provisioning что это

6. После нажатия кнопки “Continue” мы перейдём к выбору сертификата, мы создали его на 1 шаге. Далее нажимаем на кнопку “Continue”:

in app provisioning что это

7. На следующей странице нам надо заполнить поле с именем профайла и проверить данные перед генерацией профайла:

in app provisioning что это

8. После профайл будет сгенерирован и его можно будет скачать:

in app provisioning что это

9. Скачиваем Provisioning Profile, в данном примере на рабочий стол. Так же мы можем увидеть созданный provisioning profile на сайте, и увидеть, что он активен:

in app provisioning что это

in app provisioning что это

По итогу 3 шагов мы успешно создали Provisioning Profile.

1. Для этого нам потребуется приложение Xamarin в Visual Studio, которое будет подключено к Mac:

in app provisioning что это

2. В решение нужно выбрать проект IOS, нажав на него правой кнопкой мыши. В появившемся меню выбрать “Properties”. В открывшемся окне выбрать пункт “ios bundle setting”. Далее выбрать в “bundle setting” – “manual provisioning”, а ниже в графе “manual provisioning” выбрать свой сертификат и профайл который мы создали на предыдущих этапах:

in app provisioning что это

in app provisioning что это

3. В проекте IOS нужно выбрать файл Info.plist и убедится что “bundle identifier” совпадает с нужным App ID:

in app provisioning что это

in app provisioning что это

Команда: msbuild /p:Configuration=Release /p:ServerAddress=10.211.55.2 /p:ServerUser=xamUser /p:Platform=iPhone /p:ArchiveOnBuild=true /t:»Build» MyProject.csproj

in app provisioning что это

in app provisioning что это

in app provisioning что это

in app provisioning что это

in app provisioning что это

При помощи их мы сможем распространять своё приложение минуя AppStore, например, внутри компании. Далее нам надо нажать кнопку “Distribute App”. В появившемся меню выбрать “Enterprise” и нажать кнопку “Next”:

in app provisioning что это

7. Далее нужно выбрать устройства, на которые можно распространять и обязательно выбрать “include manifest for over-the-air installation”, для того чтобы можно было скачать приложение из браузера:

in app provisioning что это

in app provisioning что это

9. На следующем этапе нам нужно выбрать созданные сертификат и Provisioning Profile:

in app provisioning что это

10. После мы увидим успешно собранное приложение, и мы должны выбрать куда сохранить папку с приложением, которое мы после будем распространять:

in app provisioning что это

in app provisioning что это

in app provisioning что это

in app provisioning что это

in app provisioning что это

5 Шаг. Распространение приложения

На предыдущих шагах мы подготовили наше приложение к распространению. На данном шаге мы создадим простой html файл с ссылкой и выложим её на локальный IIS, это делается для упрощения примера, но местоположение ссылки роли не играет. Не в рамках примера ссылку
можно разместить на собственном сайте, чтобы она была доступно сотрудникам, как и файлы приложения, следует размещать на собственном сервере. Однако в этом примере, как упоминалось ранее, мы использовали сервис dropbox.

in app provisioning что это

2. После создаём html файл, следующего содержания:

3. Далее выкладываем этот html файл на локальный IIS (или ваш сайт), и пройдя по данной ссылке с мобильного устройства нам предложат установить приложение. После установки приложения пользователю нужно подтвердить доверие сертификату на устройстве Settings → General → Device Management → «Enterprise Name» тогда только пользователи смогут открыть приложение:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *