我正在尝试发送推送通知到我的flutter应用程序,Android部分工作正常,但iOS设备没有接收推送通知(我创建了APN证书,它在我的另一个应用程序中工作正常)。
这是我的配置
main.dart
void main() async {
WidgetsFlutterBinding.ensureInitialized();
SharedPreferences prefs = await SharedPreferences.getInstance();
await Firebase.initializeApp();
String? logged =
prefs.getString('uid') == null || prefs.getString('uid') == ''
? null
: prefs.getString('uid');
initializeDateFormatting();
Intl.defaultLocale = 'tr';
listenChanges();
AwesomeNotifications().initialize(
// set the icon to null if you want to use the default app icon
'resource://drawable/res_app_icon',
[]);
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
// Create the initialization for your desired push service here
runApp(MyApp(
logged: logged,
));
}
class MyApp extends StatefulWidget {
MyApp({required this.logged});
String? logged;
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
Widget build(BuildContext context) {
return GetMaterialApp(
debugShowCheckedModeBanner: false,
title: 'Greatr',
theme: whiteTheme,
home: widget.logged != null ? SplashScreen() : Onboarding(),
);
}
}
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
AwesomeNotifications().createNotificationFromJsonData(message.data);
}
与我的工作示例相同。
AppDelegate.swift
import UIKit
import Flutter
import Firebase
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FirebaseApp.configure()
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
}
也启用推送通知和后台模式(后台获取和远程通知)
试图解决这个问题2-3天,并尝试了所有的解决方案,仍然没有通知,任何想法如何解决它?
awesome_notifications: ^0.0.6+10
firebase_core: "^1.0.4"
firebase_messaging: "^9.1.2"
from firebase documentation
上传您的APNs认证密钥到firebase。如果你还没有APNs认证密钥,请确保在Apple Developer Member Center中创建一个。
在Firebase控制台的项目中,选择齿轮图标,选择项目设置,然后选择云消息选项卡。
在iOS应用配置下的APNs认证密钥中,点击上传按钮。
浏览到保存密钥的位置,选择它,然后单击Open。为密钥添加密钥ID(可在Apple Developer Member Center中获得),然后单击上传。
我检查了所有的检查表两到三次,但没有任何效果。作为旧版本,代码副本工作正常。问题不在于代码,而在于推送通知有效负载。您需要添加通知有效负载,或者将其与现有的数据有效负载"notification": { "content_available":true}
一起添加。
如果你像我一样将项目转移到不同的Apple开发者帐户,请不要忘记更新Team ID
和APNs Authentication Key
。
- 从https://developer.apple.com/account/resources/authkeys/list创建新的APNs密钥并下载。
- 转到
Firebase > Project Settings > General
- 选择苹果应用后更新
Team ID
。 - 转到
Firebase > Project Settings > Cloud Messaging
- 第二步
Upload key
和insert Key ID