当前位置: 首页 > 知识库问答 >
问题:

带有触发服务的Android FCM显示通知

费学
2023-03-14

我试图在我的应用程序中实现FCM,但我有一个问题。每当我发送通知时,它只显示默认通知,而不是调用自定义代码。我做错了什么?

这些是服务:

<service
    android:name="com.backgroundws.MyFirebaseMessagingService">
    <intent-filter>
        <action android:name="com.google.firebase.MESSAGING_EVENT"/>
    </intent-filter>
</service>
<service
    android:name="com.backgroundws.MyFirebaseInstanceIDService">
    <intent-filter>
        <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
    </intent-filter>
</service>
public class MyFirebaseMessagingService extends FirebaseMessagingService {

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        Log.d("MyFirebaseMessaging", "GotMessage");
        WSListener.sendEvent(this, "Push");
    }

}
I/SendBroadcastPermission: action:com.google.android.gms.gcm.ACTION_SCHEDULE, mPermissionType:0
I/SendBroadcastPermission: action:com.google.android.gms.gcm.ACTION_SCHEDULE, mPermissionType:0
function send_gcm_notify($reg_id, $message, $url, $key) {
        $fields = array(

            'to'                   => $reg_id ,
            'priority'             => "high",
            "notification"         => array("body"=>$message),
            'data'                 => array( "url"=> $url)
        );

        $headers = array(
            'Content-Type: application/json',
            'Authorization: key=' . $key
        );

        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://fcm.googleapis.com/fcm/send");
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

        $result = curl_exec($ch);
        if ($result === FALSE) {
            //die('Problem occurred: ' . curl_error($ch));
        }
        curl_close($ch);
        return $result;

    }

共有1个答案

谯志诚
2023-03-14

如果你想要你的服务器的内容在两种模式(后台和前台)通知,你必须发送有效负载从服务器内的‘数据’只。关于更多,您可以在这里参考如何处理Android FCM消息时,应用程序是在后台的数据有效负载?

 类似资料:
  • Firebase提供了两种放置推送通知的方法,一种是使用它的Firebase控制台,另一种是使用以前在GCM中使用的服务器。现在我们正在将我们的服务器从GCM转换为Firebase,我们需要在应用程序中接收并显示FCM通知。 我已经完成了firebase官方网站的实现,并且完成了示例代码,但是我仍然停留在这一部分上。当我们的服务器向Firebase发送推送通知,并且Firebase向我的应用程序发

  • 所以我正在使用asmack库来侦听传入的xmpp数据包。我已经实现了服务。它启动,绑定,运行一个方法,然后解除绑定。该服务创建PacketListener以获取传入消息,并在新消息传入时显示通知。当应用程序处于活动状态时,这一切都起作用,但当它完全关闭(在窗口列表中滑动)时就不起作用了,它只是在运行服务,PacketListener不启动。但只要重新打开应用程序,它就会立即启动,关闭所有通知。我正

  • 我正在尝试创建以下进程: 为了连接两端(IoT Hub和Notification Hub),我尝试按照以下教程操作:https://www.developer.com/ws/android/senging-notifications-to-mobile-apps-fromon-azure-function-apps.html 此外,我还添加了从IoT集线器到服务总线中适当队列的路由。 现在,每当I

  • 编辑 我的通知是这样创建的,到目前为止,它在数千个API<26的android设备上工作:

  • 我试图让在Docker容器中运行,然后通过NGINX主机访问它。初始的加载,但无法连接到开发服务器的Web套接字连接。 VM47:35到“ws://example.com/sockjs-node/834/izehemiu/WebSocket”的WebSocket连接失败:WebSocket握手过程中出错:意外响应代码:400 我使用以下配置。

  • 问题内容: http://react-bootstrap.github.io/components.html#modals-我正在寻找一种方法来查找“ shown.bs.modal”而不是“ show.bs.modal”的触发事件。 我没有看到有关某些引导方式事件的任何文档: http //getbootstrap.com/javascript/#modals- events 我什至试图通过仅在j