«Токен APNS еще не установлен» только тогда, когда приложение создается через конвейер.IOS

Программируем под IOS
Ответить
Anonymous
 «Токен APNS еще не установлен» только тогда, когда приложение создается через конвейер.

Сообщение Anonymous »

Я создаю флаттер-приложение для клиента и в настоящее время настраиваю push-уведомления с помощью firebase_messaging: ^16.1.1. Я также настроил конвейер действий Github.
Проблема: если я выпускаю TestFlight через действия Github, FirebaseMessaging.instance.getAPNSToken() возвращает значение null, но если я выпускаю через Xcode (Архив -> Проверить -> Распространить), FirebaseMessaging.instance.getAPNSToken() возвращает токен.
Это говорит мне об этом. мой конвейер настроен неправильно, но я не знаю где.
Как мне улучшить мой конвейер, чтобы push-уведомления работали в сборке Testflight?
name: Build-iOS

on:
push:
branches: [ "develop" ]

jobs:
build:
runs-on: macos-15 # already tried macos-26, didnt work
steps:
- name: Set up Flutter
uses: subosito/flutter-action@v2
with:
channel: stable
flutter-version: 3.38.9

- name: Install the Apple certificate and provisioning profile
env:
BUILD_CERTIFICATE_BASE64: ${{ secrets.CERTIFICATE_P12 }}
P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.DEV_PROD_MOBILEPROVISION }}
KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
run: |
# create variables
CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision
KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db

# import certificate and provisioning profile from secrets
echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH
echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH

# create temporary keychain
security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH

# import certificate to keychain
security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security set-key-partition-list -S apple-tool:,apple: -k "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH

# apply provisioning profile
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles

- name: flutter build ipa
run: flutter build ipa --release --no-codesign

- name: Archive
env:
CONFIGURATION: Release
WORKSPACE: ios/Runner.xcworkspace
SCHEME: Runner
CERTIFICATE_ID: $CERTIFICATE_ID
PROFILE_ID: abe11ac0-949d-40d8-bb80-406cd39ad9df
TEAM_ID: 88JMYVVGNH
ARCHIVE_PATH: ios/build/Runner.xcarchive
run: >-
xcodebuild build -sdk iphoneos
-configuration $CONFIGURATION
-workspace $WORKSPACE
-archivePath $ARCHIVE_PATH
-scheme $SCHEME
CODE_SIGN_STYLE=Manual
CDE_SIGN_IDENTITY="$CERTIFICATE_ID"
PROVISIONING_PROFILE=$PROFILE_ID
CODE_SIGNING_REQUIRED=Yes
CODE_SIGNING_ALLOWED=No
PROVISIONING_PROFILE_SPECIFIER=

- name: export
env:
ARCHIVE_PATH: build/ios/archive/Runner.xcarchive
EXPORT_OPTIONS_PATH: ios/ExportOptions.plist
EXPORT_PATH: output
run: >-
xcodebuild -exportArchive
-archivePath $ARCHIVE_PATH
-exportPath $EXPORT_PATH
-exportOptionsPlist $EXPORT_OPTIONS_PATH

- name: Validate & upload
env:
API_KEY: ${{ secrets.APP_STORE_API_KEY }}
ISSUER_ID: ${{ secrets.APP_STORE_ISSUER_ID }}
APP_STORE_KEY_ID: ${{ secrets.APP_STORE_KEY_ID }}
WORKSPACE_PATH: ${{ github.workspace }}
IPA_PATH: output/my-app.ipa
run: |
mkdir ~/.private_keys
API_KEY_FILE_NAME=AuthKey_$APP_STORE_KEY_ID.p8
API_KEY_PATH=~/.private_keys/$API_KEY_FILE_NAME
echo -n "$API_KEY" | base64 --decode -o $API_KEY_PATH

xcrun altool --validate-app -f $IPA_PATH -t ios --apiKey $APP_STORE_KEY_ID --apiIssuer $ISSUER_ID
xcrun altool --upload-app -f $IPA_PATH -t ios --apiKey $APP_STORE_KEY_ID --apiIssuer $ISSUER_ID


Подробнее здесь: https://stackoverflow.com/questions/798 ... a-pipeline
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»