Mer*_*rez 5 ios firebase flutter firebase-cloud-messaging
我的应用程序需要推送通知。我只是遵循flutterfire 指南,android 工作正常,但不适用于 iOS 应用程序...我认为错误出在通知配置中,因为代码永远不会print("PUSH RECEIVED");
在FirebaseMessaging.onMessage.listen()
或内部执行FirebaseMessaging.onBackgroundMessage()
。
我的颤动医生-v:
\n[\xe2\x88\x9a] Flutter (Channel dev, 1.27.0-4.0.pre, on Microsoft Windows [Version 10.0.19042.985], locale es-ES)\n \xe2\x80\xa2 Flutter version 1.27.0-4.0.pre at C:\\SDKs\\flutter\n \xe2\x80\xa2 Framework revision f8cd24de95 (3 months ago), 2021-02-16 11:24:17 -0800\n \xe2\x80\xa2 Engine revision 1d537824d6\n \xe2\x80\xa2 Dart version 2.13.0 (build 2.13.0-30.0.dev)\n\n[\xe2\x88\x9a] Android toolchain - develop for Android devices (Android SDK version 30.0.3)\n \xe2\x80\xa2 Android SDK at C:\\Users\\Windows\\AppData\\Local\\Android\\sdk\n \xe2\x80\xa2 Platform android-30, build-tools 30.0.3\n \xe2\x80\xa2 Java binary at: C:\\Program Files\\Android\\Android Studio\\jre\\bin\\java\n \xe2\x80\xa2 Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)\n \xe2\x80\xa2 All Android licenses accepted.\n\n[\xe2\x88\x9a] Chrome - develop for the web\n \xe2\x80\xa2 Chrome at C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe\n\n[\xe2\x88\x9a] Android Studio (version 4.1.0)\n \xe2\x80\xa2 Android Studio at C:\\Program Files\\Android\\Android Studio\n \xe2\x80\xa2 Flutter plugin can be installed from:\n https://plugins.jetbrains.com/plugin/9212-flutter\n \xe2\x80\xa2 Dart plugin can be installed from:\n https://plugins.jetbrains.com/plugin/6351-dart\n \xe2\x80\xa2 Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)\n\n[\xe2\x88\x9a] Connected device (3 available)\n \xe2\x80\xa2 SM G986B (mobile) \xe2\x80\xa2 ... \xe2\x80\xa2 android-arm64 \xe2\x80\xa2 Android 11 (API 30)\n \xe2\x80\xa2 Chrome (web) \xe2\x80\xa2 chrome \xe2\x80\xa2 web-javascript \xe2\x80\xa2 Google Chrome 90.0.4430.212\n \xe2\x80\xa2 Edge (web) \xe2\x80\xa2 edge \xe2\x80\xa2 web-javascript \xe2\x80\xa2 Microsoft Edge 90.0.818.62\n\n\xe2\x80\xa2 No issues found!\n
Run Code Online (Sandbox Code Playgroud)\npubspec.yaml:
\n#https://firebase.google.com/docs/flutter/setup?platform=android\nfirebase_core: ^1.2.0\nfirebase_analytics: ^8.1.0\nfirebase_messaging: ^10.0.0\n#https://dev/packages/flutter_local_notifications/install\nflutter_local_notifications: ^5.0.0+4\n
Run Code Online (Sandbox Code Playgroud)\n主要.dart:
\nvoid main() async {\n ...\n\n await Firebase.initializeApp();\n bFirebaseMessaging.init();\n\n ...\n\n runApp(MyApp());\n}\n\n...\n\nclass _MyAppState extends State<MyApp> {\n\n ...\n\n static Future<void> _throwGetMessage(RemoteMessage message) async {\n print("PUSH RECEIVED");\n await Firebase.initializeApp();\n bFirebaseMessaging.showPushFromBackground(message);\n }\n\n @override\n Widget build(BuildContext context) {\n ...\n\n FirebaseMessaging.onMessage.listen((RemoteMessage message) {\n print("PUSH RECEIVED");\n bFirebaseMessaging.showPush(message);\n });\n\n FirebaseMessaging.onBackgroundMessage(_throwGetMessage);\n\n ...\n }\n\n ...\n}\n
Run Code Online (Sandbox Code Playgroud)\nPod文件:
\n# Uncomment this line to define a global platform for your project\nplatform :ios, \'12.0\'\n$FirebaseSDKVersion = \'8.0.0\'\n\n...\n\ntarget \'Runner\' do\n use_frameworks!\n use_modular_headers!\n\n flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))\n pod \'FirebaseFirestore\', :git => \'https://github.com/invertase/firestore-ios-sdk-frameworks.git\', :tag => \'8.0.0\'\nend\n\n...\n
Run Code Online (Sandbox Code Playgroud)\nbFirebaseMessaging.dart:
\nclass bFirebaseMessaging {\n\n ...\n\n static Future init() async {\n\n // Declaration of variables\n FirebaseMessaging firebaseMessaging = FirebaseMessaging.instance;\n NotificationSettings settings = await firebaseMessaging.requestPermission(\n alert: true,\n announcement: false,\n badge: true,\n carPlay: false,\n criticalAlert: false,\n provisional: false,\n sound: true,\n );\n\n print(\'User granted permission: ${settings.authorizationStatus}\');\n\n if(Platform.isIOS){\n await firebaseMessaging.setForegroundNotificationPresentationOptions(\n alert: true, // Required to display a heads up notification\n badge: true,\n sound: true,\n );\n }\n }\n\n ...\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n另一方面,我配置了整个 Firebase:
\niOS 设备收不到推送通知的原因有什么想法吗?我想我会提供所有必要的信息,如果您需要什么,请告诉我!提前致谢!
\n小智 3
我在 ios 中的 firebase 推送通知也有同样的问题。我的 Android 推送通知工作正常,但在 ios 中却无法正常工作。
我所做的是按照 firebase 提供的说明集成推送通知(不是 flutter 指南,而是 ios 指南)请按照此链接https://firebase.google.com/docs/cloud-messaging/ios/client
在 ios 中,用户必须授予向他们发送推送通知的权限,这与 Android 不同,因此您要做的是将以下代码添加到 AppDelegate.swift
if #available(iOS 10.0, *) {
// For iOS 10 display notification (sent via APNS)
UNUserNotificationCenter.current().delegate = self
let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
UNUserNotificationCenter.current().requestAuthorization(
options: authOptions,
completionHandler: { _, _ in }
)
} else {
let settings: UIUserNotificationSettings =
UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
application.registerUserNotificationSettings(settings)
}
application.registerForRemoteNotifications()
Run Code Online (Sandbox Code Playgroud)
希望这有效
归档时间: |
|
查看次数: |
9729 次 |
最近记录: |