我已经在我的IONIC应用程序中添加了推送通知,使用本教程:在IONIC + Angular应用程序中使用推送通知。
在Android上一切正常,但在IOS上通知不传送。在我的Firebase控制台中,有一条通知已发送的信息,但我的IPhone上没有显示任何信息。该应用程序由TestFlight(内部测试)安装。
问题是:
- 如何调试或以某种方式检测哪里可能是问题?
- 如果没有办法检查,也许有一个常见问题的列表?
- 检查iOS推送通知权限是否开启
- 检查你是否收到推送通知令牌当你运行你的应用程序(它不工作在模拟器,必须是真实的设备)
- 在你的苹果开发者账户上注册推送通知键,并将该键添加到你的firebase应用程序中。
iOS上的推送通知有点棘手。这个教程帮助了我:https://devdactic.com/push-notifications-ionic-capacitor/
检查客户端是否向服务器发送了一个推送令牌
检查发送给apple的推送是否有错误报告。
检查控制台日志是否出现在客户端设备上。
如果收到任何推送通知,请在应用程序中检查。
除了遵循已经列出的建议并假设您已经详细地遵循了链接教程之外,帮助我理解与推送通知相关的问题的方法是检查从
接收到的令牌的有效性。// On success, we should be able to receive notifications
PushNotifications.addListener('registration',
(token: PushNotificationToken) => {
alert('Push registration success, token: ' + token.value);
}
);
是通过输入您收到的令牌来联系此链接https://iid.googleapis.com/iid/info/{{Token}}?details=true。如果响应包含一个错误,你的配置是不正确的,错误应该在应用到AppDelegate.swift的更改中找到。此外,我注意到并非总是侦听器捕获令牌并不总是在注册后激活,我还必须在我的应用程序中插入提供方法的@capacitor-community/fcmplugin
FCM.getToken ()
.then ((r) => alert (`Token $ {r.token}`))
.catch ((err) => console.log (err));
根据我的测试,总是返回令牌,这个解决方案只适用于iOS,而且这个插件还允许你有效地管理主题。这绝对不是一个干净的解决方案,但对我来说,它解决了一个问题,我已经挣扎了好几天。我能给你的最后一个建议是注意监听器的激活和停用,并尝试使用setTimeout()来了解你的工作失败是否源于资源的不正确初始化,以及这些是否必须移动到应用程序状态,其中各种方法所需的资源是可用的。