Firebase 云消息传递 - FirebaseMessaging.instance.getToken() 抛出未知错误

问题描述 投票:0回答:1

我正忙于尝试使用 Firebase 的云消息服务在我的 Flutter 应用程序中设置推送通知

我正在关注 Udemy 讲座(如果您订阅了 Udemy,可以在此处找到它),并且偶然发现了一个错误,我似乎无法在网上其他任何地方找到该错误。我用来检索 FCM 注册令牌的代码如下:

void _setupPushNotifications() async {
    try {
      
      final fcm = FirebaseMessaging.instance;
      final settings = await fcm.requestPermission();
      print(settings.authorizationStatus);
      final token = await fcm.getToken();
      print('token is: $token');
 
    } catch (e, stackTrace) {
      print('Error setting up push notifications: $e');
      print(stackTrace);
    }
  }
 
  @override
  void initState() {
    _setupPushNotifications();
    super.initState();
  }

这与讲座中所做的完全相同,并且可以在许多在线示例/教程和文档中找到相同的代码。然而,当我调用 fcm.getToken() 时,不幸的是我收到了一个错误,但细节很少。调试控制台中打印语句、错误和堆栈跟踪的结果如下所示:

Restarted application in 308ms. flutter: AuthorizationStatus.authorized flutter: Error setting up push notifications: [firebase_messaging/unknown] An unknown error has occurred. flutter: #0 StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:648:7) #1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:334:18) platform_channel.dart:334 <asynchronous suspension> #2 MethodChannel.invokeMapMethod (package:flutter/src/services/platform_channel.dart:534:43) platform_channel.dart:534 <asynchronous suspension> #3 MethodChannelFirebaseMessaging.getToken (package:firebase_messaging_platform_interface/src/method_channel/method_channel_messaging.dart:248:11) method_channel_messaging.dart:248 <asynchronous suspension> #4 _ChatScreenState._setupPushNotifications (package:chat_app/screens/chat.dart:20:21) chat.dart:20 <asynchronous suspension>
因此,正如您所看到的,请求已获得很好的授权,并且在此之前一切正常,但是一旦我尝试使用 getToken() 方法,就会立即抛出错误。

我尝试在网上搜索以找出原因。

这个堆栈溢出帖子让我在 Google Cloud Console 中查看了我的 iOS 密钥,我注意到尚未为此密钥选择 Firebase Cloud Messaging API。然而,选择这个、保存并等待超过建议的 5 分钟后,似乎没有任何区别。

我还重新启动了我的应用程序,尝试了不同的 IOS 模拟器,并运行 flutter clean 和 flutter doctor。我真的不知道从这里还能去哪里,因为关于错误可能是什么的信息太少了。

flutter firebase dart firebase-cloud-messaging apple-push-notifications
1个回答
0
投票
通过 xcode 启用推送通知功能。

    在 xcode 上打开您的项目
  1. 在项目导航器中选择您的项目
  2. 在项目编辑器中选择目标,然后转到
  3. Signing & Capabilities
     选项卡

Add a capability to a target

    点击
  1. + Capabilities
    
    
  2. 搜索
  3. Push Notifications
    然后添加它
  4. 再次尝试运行。
参考:

启用推送通知 - Xcode 帮助

© www.soinside.com 2019 - 2024. All rights reserved.