Выкладываем приложение в App Store. Даже если вы не разработчик
Ранее писали про этап подготовки к релизу. Сейчас расскажем про публикацию приложения в AppStore. Пошаговый гайд будет полезен новичкам, которые до этого не сталкивались с полицией нравов из Купертино.
Для того чтобы выложить приложение в App Store, потребуется оплаченный аккаунт разработчика, среда разработки XCode и исходный код вашего приложения. Разобьем процесс на четыре этапа:
Настройка аккаунта
Все приложения перед выгрузкой в App Store должны быть подписаны сертификатом разработчика. Это нужно, чтобы пользователи App Store были уверены, что скачивают конкретное приложение от конкретного разработчика, а не подделку от чужого имени. Процедура подписывания (code signing) приложения позволяет операционной системе узнать, кто является разработчиком. И удостовериться в том, что приложение не было изменено с момента сборки. Точнее, с того момента, как разработчик его подписал. В этой процедуре участвуют три объекта: сертификат разработчика, AppID и Provisioning profile.
Сертификат
Сертификат представляет собой пару ключей асимметричного шифрования: приватный и публичный. В процессе сборки XCode формирует цифровую подпись для сборки на основании данных приватного ключа. Проверить подпись можно с помощью публичного ключа, который доступен и для Apple, который этот сертификат выдала.
Одного сертификата достаточно для выкладки неограниченного количества приложений.
Чтобы создать сертификат, нужно:
Сохраните сгенерированный сертификат на компьютер, откройте его (дважды кликнув). Сертификат будет помещен в системное хранилище и доступен для XCode.
AppID
Это уникальный строковый идентификатор приложения среди всех приложений. Он нужен для однозначной идентификации во всех системах: iTunes Connect, App Store и пр. Он состоит из двух частей: TeamID и BundleID. TeamID — идентификатор разработчика, выдается Apple на этапе регистрации аккаунта разработчика и не меняется. BundleID задается разработчиком при регистрации приложения в аккаунте.
Provisioning profile
Это профиль, который однозначно связывает AppID и сертификат разработчика (публичный ключ сертификата). В случае development provisioning profile он также содержит UDID всех устройств, на которых возможен запуск приложения.
Сохраните сгенерированный профайл на компьютер, откройте его, дважды кликнув. Теперь сертификат доступен для XCode.
Оформление приложения для магазина
Теперь нужно добавить приложение в iTunes Connect.
Переходим на https://itunesconnect.apple.com в раздел MyApps. Чтобы добавить приложение, нажмите плюсик слева вверху:
Заполняем открывшуюся форму:
Если все заполнено правильно, попадаем на страницу приложения.
На вкладке слева «Pricing and Availability» заполняем информацию о стоимости приложения в сторе. На вкладке слева с номером версии заполняем маркетинговую информацию:
О том, как подготовить маркетинговую информацию, мы рассказывали в предыдущей статье.
Также есть секция для того, чтобы можно было указать конкретную сборку, которую отправлять на ревью, а затем и в стор. Выбор недоступен до тех пор, пока мы не загрузили в iTunes Connect ни одной сборки приложения. Мы вернемся к этой секции позже:
Чтобы сохранить внесенные изменения, используйте кнопку Save наверху:
Настройка проекта, сборка и выгрузка
Откройте проект вашего приложения в XCode, перейдите к настройкам проекта. Необходимо, чтобы Bundle Identifier совпадал с BundleID, который вы указали при создании AppID. Также необходимо отключить функцию автоматического управления подписыванием в XCode. В выпадающем списке Provisioning Profile выберите тот, который недавно создали.
Обратите внимание: без всех необходимых иконок (в том числе иконка для магазина со стороной 1024 точки) сборка приложения не пройдет автоматическую проверку в iTunes Connect.
Теперь проект можно собрать и отправить в iTunes Connect. Для этого нужно нажать меню Product — Archive. По итогу сборки будет показано окно органайзера XCode, нажмите там кнопку «Upload To App Store»:
Открывается окно настроек выгрузки в App Store. Подробнее про bitcode, symbols stripping. Оставляем настройки без изменений.
На следующем шаге нужно выбрать provisioning profile из выпадающего списка подходящих:
Затем XCode подготовит архив для выгрузки в iTunes Connect. На этом экране обратите внимание на те параметры, что мы установили. Нажмите Upload.
В зависимости от скорости соединения нужно будет подождать некоторое время. Если все в порядке, XCode сообщит об успешном завершении выгрузки в iTunes Connect. Можно переходить к последнему этапу.
Отправка на ревью
В iTunes Connect на вкладке Activity можно увидеть отправленную сборку. Для проектов на Swift автоматическая проверка сборки занимает примерно полчаса. До тех пор сборка будет со статусом Processing:
После окончания проверки сборка доступна для выбора на странице информации о версии приложения:
После этого у приложения в iTunes Connect появится иконка. Сохраните изменения. Теперь можно отправить сборку на ревью.
Готово! Вы сделали все, что могли. Ждите ответа в течение нескольких дней. Не забудьте, что с 23 по 27 декабря iTunes Connect на каникулах. Разработчики не смогут обновлять и добавлять новые приложения в App Store и изменять ценники. Все остальные функции iTunes Connect будут доступны.
Новости технологий, видео обзоры, цены
Как найти идентификатор приложения и что это такое за уникальный код
Смартфоны продолжают предлагать широкий ряд мобильных приложений для пользователя.
Определите тип системы, на которой приложение работает. Приложения для Android платформы подойдут для разнообразных видов мобильного аппаратного обеспечения созданного разными производителями, в то время как приложения для iOS системы ограничиваются аппаратным обеспечением Apple, такими как iPhone, iPad и iPod.
Идентификатор приложения или «App ID» иногда могут называть как «iTunes ID» или «Google Play ID».
Как узнать идентификатор приложения в App Store
Определите идентификатор приложения от Apple, открыв iTunes соединение и нажав кнопку «Получить информацию». Идентификатор приложения будет выглядеть как строка из серии цифр, стоящая после имени. Например, в ссылке «example.examplelinkname.1234567» строка цифр «1234567» представляет уникальный идентификатор приложения.
Как узнать идентификатор приложения в Google Play
Определите идентификатор приложения на Android, открыв ваш мобильный интернет-браузер и воспользовавшись market.android.com. В Android только разработчики ссылаются и используют цифровой идентификатор приложения. Идентификатор приложения для покупателя это просто название приложения.
Подсказка по дентификатору приложения:
1 комментарий:
Как с айди оказывается все просто. Спасибо! Буду знать!
Кликом по иконке, поделиться информацией в социальной сети:
Bundle ID is an identifier for each app published on App Store and set when creating an app.
Every iOS application requires a bundle ID to work and it needs to be unique if the developer wants to publish it on App Store.
Example: com.mrvirk.test.app
You can not directly look up and find the bundle ID of an App in the Apple App Store unlike Google playstore for Android where it provides applications package name (Android equivalent of Bundle ID) in the app’s playstore link.
So, to find an iOS Apps bundle ID you need to take couple steps as covered below –
To find the bundle ID, you can use one of the below listed solutions –
1- Find the bundle ID from the Text file
Steps
Step 1: Search for the App Name on Google Search using your Desktop browser like Chrome, Firefox etc and open apps itunes/app store link.
Example: Search – Yahoo News App store.
This will give you app’s link – https://itunes.apple.com/us/app/yahoo-news-live-breaking-news/id304158842?mt=8 (here we have Yahoo News Apps link).
Step 2: Now, copy the number after id in the URL, which is 304158842 in the example above.
Step 3: Open a new browser window, and go to this link and add the id number in place of the question marks and a country code depending on your location (or just use what we have in the example) and refresh the page.
https://itunes.apple.com/lookup?id=??country=??
Example: https://itunes.apple.com/lookup?id=304158842&country=us
This will prompt you to download a text file.
Step 4: Save Text File. The default name of the file is 1.txt.
Open the file in a text editor, and then search for bundleId. Here is an example:
So, here we found the bundle ID for the Yahoo News App which is com.yahoo.frontpage
Pro Tip: You can also review other relevant information in this text file, such as minimum OS version, language code, supported devices, and apps release information.
Example: Rename YahooNews.ipa as YahooNews.zip
Open the iTunesMetadata.plist file using a text editor, and then search for softwareVersionBundleId
This will give you the applications bundle id.
Hope this article helped solve your problem, please support the content by sharing it with friends and family on social network of your choice.
Other Search queries this article has answers to:
Apps Bundle ID in iOS, How do I find my iOS App ID? How do I find my IPA bundle ID? How do I get an Apple bundle ID? What is the bundle identifier XCode? What is an app bundle?
Modifying the bundle identifier, package name & app display name in a Flutter app
This tutorial is part of the Flutter app build and release series. Here is list of all articles in this series.
Android apps on the play store have a unique package name and iOS apps have bundle identifier that serves the same purpose. Often we create our project with some other package and name and before publish we need to change it so here is a guide for you to change the app display name as well as package/bundle id for both android and iOS platforms.
Changing the app display name
Android
That’s all, your new app name will be displayed on the user’s phone now.
Bundle ID and Package Name
Changing package name for the Android platform
This needs to be changed in 4 places.
This file will be found at 3 places. Repeat the replacement for all three files.
2. App level build.gradle
If your app is using java instead of kotlin, it will be MainActivity.java within java folder.
Change the top package statement
4. The directory containing the MainActivity.kt file
The file from above step will be within com/example/domainname. You want to replace the ‘ example’ with your domain name.
Right click on ‘ example’ folder. Go to Refractor → Rename.
Change the name and click Refractor.
Now the new path should be like com/newpackage/app/
That is all. Now your android app is ready with new package.
Change Bundle Identifier for iOS Platform
iOS app has the bundle identifier set in Info.plist file as value for the key CFBundleIdentifier. First check and make sure that this key in Info.plist file points to a variable like this:
So now we will find this variable and set its value. It will be present in the following file:
project/ios/Runner.xcodeproj/ project.pbxproj file
Find the PRODUCT_BUNDLE_IDENTIFIER variable and change its value to the identifier you want to use.
This variable will be present in at least 3 places. So, you must run a search and replace all occurrences.
That’s all for the iOS app.
Now just run the following command in your terminal and you are done.
Alternative
Don’t like changing files in such a way? An alternative way would be to use this package.
Разворачиваем сервер для проверки In-app purchase за 60 минут
Всем привет! Сегодня расскажу вам как развернуть сервер для проверки In-app Purchase и In-app Subscription для iOS и Android (server-server validation).
На хабре есть статья от 2013 года про серверную проверку покупок. В статье говорится о том, что валидация в первую очередь необходима для предотвращения доступа к платному контенту при помощи джейлбрейка и другого софта. На мой взгляд в 2020 году эта проблема не так актуальна, и в первую очередь сервер с проверкой покупок необходима для синхронизации покупок в рамках одного аккаунта на нескольких устройствах
В проверке чеков покупок нет никакой технической сложности, по факту сервер просто «проксирует» запрос и сохраняет данные о покупке.
То есть задачу такого сервера можно разделить на 4 этапа:
В рамках статьи опустим 3 пункт, ибо он сугубо индивидуален.
Код в статье будет написан на Node.js, но по сути логика универсальна и не составит труда использовать ее написать валидацию на любом языке программирования.
Еще есть статья хорошая «То, что нужно знать о проверке чека App Store (App Store receipt)», ребята делают сервис для работы с подписками. В статье детально описано, что такое чек (receipt) и для чего нужна проверка покупок.
Сразу скажу, что в сниппетах кода используются вспомогательные классы и интерфейсы, весь код доступен в репозитории по ссылке https://github.com/denjoygroup/inapppurchase. В приведенном ниже фрагментах кода, я постарался дать названия используемым методам такие, чтобы приходилось делать отсылки к этим функциям.
Для проверки вам нужен Apple Shared Secret – это ключ, который вы должны получить в iTunnes Connect, он нужен для проверки чеков.
В первую очередь зададим параметры для создания запросов:
Теперь создадим функцию для отправки запроса. В зависимости от среды, с которой работаете, вы должны отправлять запрос либо на sandbox.itunes.apple.com для тестовых покупок, либо в прод buy.itunes.apple.com
Если запрос прошел успешно, то в ответе от сервера Apple в поле status вы получите данные о вашей покупке.
У статуса возможны несколько значений, в зависимости от которых вы должны обработать покупку
21000 – Запрос был отправлен – не методом POST
21002 – Чек поврежден, не удалось его распарсить
21003 – Некорректный чек, покупка не подтверждена
21004 – Ваш Shared Secret некорректный или не соответствует чеку
21005 – Сервер эпла не смог обработать ваш запрос, стоит попробовать еще раз
21006 – Чек недействителен
21007 – Чек из SandBox (тестовой среды), но был отправлен в prod
21008 – Чек из прода, но был отправлен в тестовую среду
21009 – Сервер эпла не смог обработать ваш запрос, стоит попробовать еще раз
21010 – Аккаунт был удален
0 – Покупка валидна
Пример ответа от iTunnes Connect выглядит следующим образом
Также перед отправкой запроса и после отправки стоит сверить id продукта, который запрашивает клиент и который мы получаем в ответе.
latest_receipt_info содержит все покупки.
in_app содержит Non-consumable и Non-Auto-Renewable покупки.
Тогда проверка покупки будет выглядеть примерно так
Если интересно, то могу написать отдельную статью о том, как обрабатывать ответ от iTunnes Connect по каждому свойству, ибо вот это далеко нетривиальная задача. Так же возможно будет полезно рассказать о том, как работать с проверкой автовозобновляемых покупок, когда их проверять и как, потому что по времени истечения подписки запускать крон недостаточно – однозначно возникнут проблемы и пользователь останется без оплаченных покупок, а в этом случае сразу будут отзывы с одной звездой в мобильном сторе.
Android
Для гугла достаточно сильно отличается формат запроса, ибо сначала надо авторизоваться посредством OAuth и потом только отправлять запрос на проверку покупки.
Для гугла нам понадобится чуть больше входных параметров:
Получить эти данные можно воспользовавшись инструкцией по ссылке.
Окей, гугл, прими запрос:
Ответ от гугла выглядит примерно так:
Теперь перейдем к проверке покупки
По существу буквально в 2 метода можно проверить покупку. Репозиторий с полным кодом доступен по ссылке https://github.com/denjoygroup/inapppurchase (автор кода Алексей Геворкян)
Конечно, мы упустили очень много нюансов обработки покупки, которые стоит учитывать при работе с реальными покупками.
Есть два хороших сервиса, которые предоставляют сервис для проверки чеков: https://ru.adapty.io/ и https://apphud.com/. Но, во-первых, для некоторых категорий приложений нельзя передавать данные 3 стороне, а во-вторых, если вы хотите отдавать платный контент динамически при совершении пользователем покупки, то вам придется разворачивать свой сервер.
Ну, и, конечно, самое важное в серверной разработке – это масштабируемость и устойчивость. Если у вас большая аудитория пользователей и при этом сервер не способен выдерживать нагрузки, то лучше и не реализовывать проверку покупок самим, а отправлять запросы сразу в iTunnes Connect и в Google API, иначе ваши пользователи сильно расстроятся.









