菜鸟教程小白 发表于 2022-12-11 18:13:57

ios - 在 iOS 中检索到推送通知,但在 Firebase 中没有


                                            <p><p>我在我的应用程序中遇到了这个奇怪的问题。我正在尝试使用 firebase 在我的应用程序中集成推送通知。我使用下载的 SDK(不使用 pod)在项目中包含了 Firebase SDK。我已从应用程序中下载的 zip 文件中包含以下框架:</p>

<p> <a href="/image/32xbD.png" rel="noreferrer noopener nofollow"><img src="/image/32xbD.png" alt="enter image description here"/></a> </p>

<p>在 AppDelegate 中</p>

<pre><code>@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate, MessagingDelegate {

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: ?) -&gt; Bool {
    FirebaseApp.configure()
    return true
    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()
}

// This is called and the access token is received.
func application(_ application: UIApplication,
               didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
    var token = &#34;&#34;
    for i in 0..&lt;deviceToken.count {
      token = token + String(format: &#34;%02.2hhx&#34;, arguments: ])
    }
    print(token)
    Messaging.messaging().setAPNSToken(deviceToken, type: .sandbox)
}

// This is not getting called
func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
    Messaging.messaging().subscribe(toTopic: &#34;ios_topic&#34;)
}
</code></pre>

<p>我在 <code>didRegisterForRemoteNotificationsWithDeviceToken</code> 中获得的访问 token 是有效的,我成功地使用它向设备发送了推送。但是 FireBase 的 <code>didRefreshRegistrationToken</code> 没有被调用。我在 linkerflags 中添加了 <code>-ObjC</code>,在 <code>info.plist</code> 中添加了 <code>FirebaseAppDelegateProxyEnabled</code> 作为 <code>NO</code>。我已经在项目根目录中添加了 <code>GoogleService-Info.plist</code> 文件,并且项目在 FireBase 控制台中配置正确。</p>

<p>这里可能出现什么问题以及如何解决?</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>这是学习教程时犯的最愚蠢的错误。只需将<code>Messaging.messaging()</code>的delegate设置为<code>AppDelegate</code>即可。在 <code>FirebaseApp.configure()</code> 下添加以下代码,问题就解决了。</p>

<pre><code>FirebaseApp.configure()
Messaging.messaging().delegate = self
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在 iOS 中检索到推送通知,但在 Firebase 中没有,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/45015929/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/45015929/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在 iOS 中检索到推送通知,但在 Firebase 中没有