Flutter项目iOS及Android端Firebase初始化实现推送通知的iOS端适配问题
Flutter iOS端Firebase初始化及推送通知配置方案
一、Dart层代码优化
你现有代码仅针对Android做了Firebase初始化,实际firebase_core已实现跨平台适配,可直接移除平台判断,简化代码如下:
import 'dart:io'; import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'splash.dart'; void main() async => { WidgetsFlutterBinding.ensureInitialized(), // 自动适配Android、iOS平台,无需单独判断 await Firebase.initializeApp(), SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]) .then( (_) { runApp(MyApp()); }, ) }; class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( debugShowCheckedModeBanner: false, home: Splash(), theme: ThemeData(accentColor: Colors.black38), ); } }
二、iOS端原生配置步骤
- 导入Firebase配置文件
在Firebase控制台添加对应iOS应用,填写的包ID需和Xcode项目中的Bundle ID完全一致,下载生成的GoogleService-Info.plist文件。使用Xcode打开项目ios/Runner.xcworkspace,将plist文件拖入左侧导航栏的Runner/Runner目录下,弹窗中务必勾选Copy items if needed和Runner目标选项。
- 导入Firebase配置文件
- 调整iOS最低支持版本
打开ios/Podfile文件,将顶部的platform :ios注释取消,版本修改为13.0(当前Firebase SDK最低支持iOS 13)。终端进入项目ios目录,执行pod install --repo-update更新依赖。
- 调整iOS最低支持版本
- 开启推送相关能力
在Xcode中打开Runner项目的Signing & Capabilities标签页,点击左上角+号添加两个能力:
- Push Notifications 推送基础能力
- Background Modes,勾选其中的Remote notifications选项,支持后台接收推送
- 开启推送相关能力
- 配置APNs关联
前往苹果开发者账号生成APNs认证密钥(.p8格式,推荐优先使用,无需定期更新证书),将生成的密钥上传到Firebase控制台对应iOS应用的「Cloud Messaging」配置页,同时填写苹果团队ID和密钥ID完成绑定。
- 配置APNs关联
- 添加通知权限描述
打开ios/Runner/Info.plist文件,添加两项权限配置:
<key>NSUserNotificationUsageDescription</key> <string>需要通知权限为您推送消息</string> <key>NSLocalNotificationUsageDescription</key> <string>需要通知权限为您推送消息</string>- 添加通知权限描述
三、异常排查
如果出现编译运行失败,可依次执行以下命令重置依赖:
- 项目根目录执行
flutter clean - 进入ios目录执行
pod deintegrate - 执行
pod install --repo-update后重新运行项目
内容的提问来源于stack exchange,提问作者Wasiq Hussain
相关产品推荐
相关产品推荐

