Fastlane, профили подготовки iOS и разрешения для push-уведомлений (пример)

Я пытаюсь заставить Fastlane взять исходный код моего приложения для iOS и собрать/спроектировать его в архив/файл IPA. Вот мой Fastfile:

default_platform(:ios)

platform :ios do
  lane :staging do
    puts "iOS staging build"
    clean_build_artifacts
    disable_automatic_code_signing(path: "./ios/myappmobile.xcodeproj")
    build_app(
      scheme: "myappmobile",
      project: "./ios/myappmobile.xcodeproj",
      export_options: {
        signingStyle: "manual",
        provisioningProfiles: {
          "com.myapp" => "/Users/myuser/workspace/myapp/myappprovisioningprofile.mobileprovision"
        }
      },
      clean: true
    )
  end
end

Важно отметить, что /Users/myuser/workspace/myapp/myappprovisioningprofile.mobileprovision — это действительный путь/расположение файла, и именно сюда я загрузил файл профиля обеспечения.

Когда я запускаю fastlane ios staging, я получаю следующую ошибку:

error: "myappmobile" requires a provisioning profile with the Push Notifications feature. Select a provisioning profile in the Signing & Capabilities editor. (in target 'myappmobile' from project 'myappmobile')

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

Итак, моим первым предположением было то, что Fastlane нашел мой файл профиля обеспечения (myappprovisioningprofile.mobileprovision) и, возможно, что-то внутри него было настроено неправильно. Но я получаю ту же ошибку, даже если изменю значение provisioningProfiles на:

provisioningProfiles: {
  "com.myapp" => "/Users/myuser/workspace/myapp/myappprovisioningprofile.mobileprovision"
}

бредить:

provisioningProfiles: {
  "com.myapp" => "flim-flam-fizz-buzz"
}

Что здесь происходит?! Почему Fastlane не может найти файл моего профиля обеспечения (по какой-то причине это должен быть относительный путь?!). Но самое безумное: оно знает, что приложению требуются push-уведомления, но не имеет возможности читать/анализировать профиль обеспечения, так откуда же ему знать, что push-уведомления являются обязательными?!

Обновлять

После повторной настройки команды build_app с некоторыми рекомендуемыми настройками я решил проблему с push-уведомлениями, но теперь столкнулся с этим:

 error: No signing certificate "iOS Distribution" found: No "iOS Distribution" signing certificate matching team ID "<redacted>" with a private key was found. (in target 'myappmobile' from project 'myappmobile')

У меня есть сертификат распространения (ios_distribution.cer), который я создал в консоли разработчика Apple (в Интернете) и загрузил. Как я могу настроить Fastlane, чтобы «видеть» (или использовать) этот сертификат?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
529
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

 export_options: {
        "signingStyle" => "manual", 
    provisioningProfiles: {
            "com.YOUR_APP.application" => "Distribution",
        "com.YOUR_APP.application.AB24Intents" => "AB24Intents",
        "com.YOUR_APP.application.ABRPWidget" => "ABRPWidget"
                
        }

Огромное спасибо @Александр Колесник. Пожалуйста, ознакомьтесь с моим обновлением выше. Рекомендуемые вами изменения приводят к появлению еще одной ошибки (на этот раз на основе сертификата). Знаете ли вы, почему я могу это видеть, и, что более важно, какое исправление/решение? Еще раз спасибо!

hotmeatballsoup 18.03.2024 16:44

Как я вижу, ваш сертификат, который вы добавляете в связку ключей, не имеет закрытого ключа. Вы установили свои профили в xcode?

Alexandr Kolesnik 19.03.2024 12:39

Я установил профиль в XCode, но, похоже, забыл установить сертификат (после его загрузки) локально на свой Mac. Может ли это вызвать эту ошибку?

hotmeatballsoup 19.03.2024 13:09

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

Alexandr Kolesnik 19.03.2024 13:28

Я не верю, что смогу использовать автоматические настройки с сервера CI/CD. Автоматические настройки отлично подходят для локальной разработки, но в конечном итоге мне понадобится сборка моего CI-сервера + разработка кода и создание архивного файла, который я могу загрузить либо в TestFlight, либо в App Store. Но @Александр Колесник, пожалуйста, дайте мне знать, если это не так!

hotmeatballsoup 19.03.2024 16:10

Если ваши настройки в xcode являются автоматическими, вам не нужны ручные параметры в вашем скрипте.

Alexandr Kolesnik 19.03.2024 17:36

Другие вопросы по теме