周末不想在家 2024-05-23 14:05 采纳率: 5.7%
浏览 61
已结题

ios 新安装app收不到fcm推送

1、ios 使用 FCM 实现推送,新安装app可以获取fcm的token,可以翻墙,使用Firebase 官网测试推消息收不到消息。

之前已经安装过的app,可以收到,卸载后重新安装收不到。

是什么原因?

2、flutter有没有 实现apns推送的插件?

  • 写回答

16条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-05-23 14:05
    关注

    引自免费微信小程序:皆我百晓生

    针对您的问题,我会提供详细的解答和可能的解决方案。

    问题1:iOS 新安装App收不到FCM推送

    1. 检查FCM相关配置:
      • 确保您在Xcode中正确设置了FCM相关的证书和配置:
        • 在Apple Developer Account中创建并下载APNs(Apple Push Notification Service)证书。
        • 将下载的.p8文件上传到Firebase控制台,生成一个Service Account JSON文件。
        • 在Flutter项目中的AppDelegate.swift文件中添加Firebase和FCM的相关设置。
        • 配置Info.plist文件,添加必要的键值对。
    // AppDelegate.swift
    
    import Firebase
    import UserNotifications
    
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        //其他初始化代码...
    
        FirebaseApp.configure()
        
        let authOptions = UNAuthorizationOptions.authorizationOptionAlert + UNAuthorizationOptions.authorizationOptionSound + UNAuthorizationOptions.authorizationOptionBadge
        UNUserNotificationCenter.current().requestAuthorization(options: authOptions) { granted, error in
            if let error = error {
                print("Error requesting authorization for notifications: \(error.localizedDescription)")
            }
        }
        
        UNUserNotificationCenter.current().delegate = self
        return true
    }
    
    • 确保在Flutter项目中正确集成FCM插件,例如 firebase_messaging,并确保其版本是最新的。
    dependencies:
      firebase_messaging: ^10.0.5
    
    1. 调试和日志记录:
      • 检查设备上是否启用了通知权限。用户可能在设置中关闭了应用的通知权限。
      • 添加日志输出,以便查看FCM接收器是否接收到消息。这可以帮助您确定问题出在哪里。
    import 'package:firebase_messaging/firebase_messaging.dart';
    
    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
      await Firebase.initializeApp();
    
      FirebaseMessaging.onMessage.listen((RemoteMessage message) {
        print('FCM Message received: ${message.messageId}');
        // 这里添加您处理消息的逻辑
      });
    
      runApp(MyApp());
    }
    
    1. 测试环境:
      • 如果您在本地测试,确保您的网络环境没有限制访问Google服务,可能需要通过代理服务器进行测试。
      • 尝试在不同的iOS设备上测试,看看问题是否普遍存在。

    问题2:Flutter实现APNS推送的插件

    Flutter有一个名为flutter_local_notifications的插件,用于处理本地通知,但不直接支持远程APNS推送。要实现远程APNS推送,仍然需要配合Firebase Cloud Messaging (FCM) 或者第三方推送服务。如果您想使用纯APNS(不使用FCM),您需要自己编写原生代码(Objective-C/Swift)并与Flutter通信,这通常涉及到Platform Channel的概念,但这超出了本问题的范围。

    总之,首先确保FCM的所有配置都正确,并检查设备上的权限设置。如果问题依然存在,尝试在不同环境中测试,或者检查日志以找出具体问题所在。对于APNS推送,虽然没有直接的Flutter插件,但可以通过结合Flutter Local Notifications与原生代码实现。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月27日
  • 创建了问题 5月23日