我已经在我的Flutter应用中实现了Firebase Cloud Messaging,大多数情况下它似乎运作良好。当我使用以下方式之一时,我可以在我的应用程序中收到通知:
当我将其打包为Firebase App Distribution或Testflight时,它不起作用。更容易专注于App Distribution,所以我将解决方法放在这里。
在设置消息传递功能时,我已在XCode中启用了推送通知(最初我遇到了使用开发APNs的问题,但我更改了配置以使用生产服务)。这是我的entitlement文件:
我在苹果开发者门户网站上创建了一个必需的密钥:
我已按照要求将其上传到Firebase:
在部署到App Distribution时,我运行以下命令:
- 使用
flutter run
- 使用
flutter run --release
- 使用Xcode的Product > Run
当我将其打包为Firebase App Distribution或Testflight时,它不起作用。更容易专注于App Distribution,所以我将解决方法放在这里。
在设置消息传递功能时,我已在XCode中启用了推送通知(最初我遇到了使用开发APNs的问题,但我更改了配置以使用生产服务)。这是我的entitlement文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>production</string>
<key>com.apple.developer.applesignin</key>
<array>
<string>Default</string>
</array>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:N/A</string>
</array>
</dict>
</plist>
同时,在 Info.plist 文件中也启用了后台模式:
<key>UIBackgroundModes</key>
<array>
<string>fetch</string>
<string>remote-notification</string>
</array>
我在苹果开发者门户网站上创建了一个必需的密钥:
![Apple Developer Portal key](https://istack.dev59.com/SdyE6.webp)
![Firebase key configurtion](https://istack.dev59.com/32zF8.webp)
flutter build ios --flavor <env>
cd ios
xcodebuild -workspace Runner.xcworkspace -scheme <env> archive -archivePath Runner.xcarchive
xcodebuild -exportArchive -archivePath Runner.xcarchive -exportOptionsPlist exportOptions.plist -exportPath ../build/ios -allowProvisioningUpdates
其中之一是我提到的口味,而我的exportOptions.plist文件为:
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>compileBitcode</key>
<false/>
<key>method</key>
<string>ad-hoc</string>
</dict>
</plist>
我很高兴为您提供更多线索、配置和解释,但现在我不知道缺少什么或者什么原因导致了这种情况。因此问题是,当通过存档部署时,为什么推送通知无法工作?