小编Mor*_*mon的帖子

电容器推送通知或 firebase 消息服务工作者

我很困惑应该在 Angular 14 Ionic 6 Capacitor 4 应用程序中实现哪些包,以便在应用程序用户之间发送和接收通知。我需要能够处理传入的消息:

  • 当应用程序在后台时 -显示可点击的通知(推送到通知托盘是不够的!),这会将应用程序带到前台并根据接收到的数据有效负载进一步路由。
  • 当应用程序位于前台时 - 基于收到的数据有效负载的处理逻辑。

我最初的方法是使用@capacitor/push-notifications来实现,并实现两个监听器:

pushNotificationReceived

pushNotificationActionPerformed
Run Code Online (Sandbox Code Playgroud)

然而,我发现这种方法存在以下缺点:

  1. 在后台 - 消息仅发送到通知托盘 - 不会弹出。
  2. 在后台,应用程序永远不会处理未点击的通知,从而导致重要数据必须改变应用程序状态 - 丢失!
  3. 在前台,现在显示后台急需的气球弹出通知(当实际上不需要显示时)。

然后我遇到了 [firebase/messaging Service Worker][1] 方法。

我还没有实现它,但在我看来,虽然提供了onBackgroundMessage捕获和处理后台通知的方法,但还不够:

  1. 不利用 Android/iOS 提供的本机通知服务
  2. 不显示任何弹出通知,除非我自己实现(?)

此时我有些困惑:

  1. 是否有可能只能同时使用两种方法和包才能满足我的要求?
  2. 两者都可以实现吗?(在这种情况下,我在 initPush() 中的“注册”侦听器注册中注册的相同令牌将同时服务于两者?)
  3. 如果一种方法就足够了 - 是哪种方法,以及如何克服我看来缺少的东西,以满足我的要求?

谢谢你![1]: https: //firebase.google.com/docs/cloud-messaging/js/receive

push-notification firebase-cloud-messaging firebase-notifications angular

5
推荐指数
0
解决办法
905
查看次数

VBA 中的 WinHttpRequest 仅在前面有浏览器调用时才有效

以下 URL 返回包含美元汇率的 XML:

http://www.boi.org.il/currency.xml?curr=01
Run Code Online (Sandbox Code Playgroud)

我需要调用并提取(通过解析结果)Excel VBA 返回的汇率。

在浏览器中手动调用后在 VBA 中调用时 - 它工作正常。但是,经过一定时间后,它不再通过 VBA 工作,除非首先在浏览器中再次手动调用。相反,它返回此字符串作为结果:

<html><body><script>document.cookie='ddddddd=978a2f9dddddddd_978a2f9d; path=/';window.location.href=window.location.href;</script></body></html>
Run Code Online (Sandbox Code Playgroud)

我用来调用的VBA是这样的:

Function GetExchangeRate(ByVal curr As Integer, Optional ByVal exDate As Date = 0) As Single

    Dim strCurrCode As String
    Dim strExDate As String
    Dim strDateParamURL As String
    Dim intStartPos As Integer
    Dim intEndPos As Integer
    Dim sngRate As Single

    sngRate = -1

    On Error GoTo FailedCurr

    strDateParamURL = ""

    strCurrCode = Format(curr, "00")
    If (exDate > 0) Then
        strExDate = Format(exDate, "yyyymmdd")
        strDateParamURL …
Run Code Online (Sandbox Code Playgroud)

excel vba msxml winhttprequest

1
推荐指数
1
解决办法
4万
查看次数