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

Angularjs:有没有办法使用角js和FCM发送推送通知

周兴朝
2023-03-14

我正在开发ionic应用程序,需要使用FCM发送推送通知。我只想测试两个设备的推送通知。因为我已经有了这两个设备的令牌。

有没有办法使用angularjs向FCM发送RESTAPI POST请求,以向设备发送推送通知?

共有2个答案

慕容高卓
2023-03-14

发送下游通知(通知到设备)需要您有权访问Firebase云消息传递的服务器密钥。因此,决不能从客户端应用程序执行此操作,因为访问服务器密钥可以代表应用程序发送消息。

完成设备到设备消息发送的常见方法是通过Firebase数据库。请参阅这篇描述Android设备之间发送的博客文章,但这种方法也适用于其他技术。

卢晟
2023-03-14

也许你可以试着修改这份回购协议https://github.com/mexists/ionic-fcm-starter

[更新]

这里有一些基本部分。

  • ngCordova

为了接收推送通知,我们需要将ngCordova注入应用程序模块。从项目目录中,导航到www\js\app。js和编辑应用程序。js文件如下。

<代码>角度。模块('starter',['ionic',ngCordova',starter.controllers',starter.services')

  • 收听推送通知服务

该应用程序现在需要监听并控制传入的推送通知消息。为此,请在ionicPlatform中使用以下代码。就绪(fn)在www\js\app中。js文件。

//FCMPlugin.getToken( successCallback(token), errorCallback(err) );
//Keep in mind the function will return null if the token has not been established yet.
FCMPlugin.getToken(
    function (token) {
        alert('Token: ' + token);
        console.log('Token: ' + token);
    },
    function (err) {
        alert('error retrieving token: ' + token);
        console.log('error retrieving token: ' + err);
    }
);

FCMPlugin.onNotification(
    function(data){
        if(data.wasTapped){
//Notification was received on device tray and tapped by the user.
            alert("Tapped: " +  JSON.stringify(data) );
        }else{
//Notification was received in foreground. Maybe the user needs to be notified.
            alert("Not tapped: " + JSON.stringify(data) );
        }
    },
    function(msg){
        alert('onNotification callback successfully registered: ' + msg);
        console.log('onNotification callback successfully registered: ' + msg);
    },
    function(err){
        alert('Error registering onNotification callback: ' + err);
        console.log('Error registering onNotification callback: ' + err);
    }
);

现在,你的应用程序已准备好接收推送通知。您可以通过导航到左侧边栏菜单中的通知菜单,在Firebase控制台上测试它。你也可以在https://cordova-plugin-fcm.appspot.com通过提供FCM项目的服务器密钥。

要发送消息推送,我们需要使用AngularJS$超文本传输协议提供程序。

在您的控制器中,添加$超文本传输协议服务提供商

.controller('ChatDetailCtrl', function($scope, $http, $stateParams, Chats) {
  $scope.chat = Chats.get($stateParams.chatId);

然后在控制器中添加以下代码:

$scope.formData = {};
  $scope.send = function(){
    //FCMPlugin.subscribeToTopic( topic, successCallback(msg), errorCallback(err) );
    //All devices are subscribed automatically to 'all' and 'ios' or 'android' topic respectively.
    //Must match the following regular expression: "[a-zA-Z0-9-_.~%]{1,900}".
    FCMPlugin.subscribeToTopic('all'); //subscribe current user to topic

    var fcm_server_key = "AIzaSyCmu7RXJkSsNJch9MB5ySDUbguyRBeAWm8";

    $http({
      method: "POST",
      dataType: 'jsonp',
      headers: {'Content-Type': 'application/json', 'Authorization': 'key=' + fcm_server_key},
      url: "https://fcm.googleapis.com/fcm/send",
      data: JSON.stringify(
          {
            "notification":{
              "title":"Ionic 2 FCM Starter",  //Any value
              "body": $scope.formData.message,  //Any value
              "sound": "default", //If you want notification sound
              "click_action": "FCM_PLUGIN_ACTIVITY",  //Must be present for Android
              "icon": "fcm_push_icon"  //White icon Android resource
            },
            "data":{
              "param1":"value1",  //Any data to be retrieved in the notification callback
              "param2": $scope.formData.message
            },
            "to":"/topics/all", //Topic or single device
            "priority":"high", //If not set, notification won't be delivered on completely closed iOS app
            "restricted_package_name":"" //Optional. Set for application filtering
          }
        )
    }).success(function(data){
      $scope.reply = $scope.formData.message;
      alert("Success: " + JSON.stringify(data));
    }).error(function(data){
      alert("Error: " + JSON.stringify(data));
    });
  }
 类似资料:
  • 我尝试使用firebase通知控制台发送通知,它工作正常,但在代码中会抛出错误{“multicast_id”:469219618584251399,“success”:0,“failure”:1,“canonical_id”:0,“results”:[{“error”:“InvalidRegistration”}]}我的代码:-

  • 我正在尝试用C#中的FCM在android设备上发送推送通知。Net,但我收到了“InvalidRegistration”错误消息。 我也用过邮递员和R-Client的方法,但仍然得到同样的错误。 {"multicast_id":8671409506357877791,"成功": 0,"失败": 1,"canonical_ids": 0,"结果":[{"错误":"无效注册"}]}

  • 有没有可能,没有应用服务器发送推送通知使用fire-base实时数据库和通知在Android?

  • 如何使用Firebase向我的应用程序的所有注册用户发送推送通知?我在纪录片中搜索了api,但没有找到任何有用的东西。

  • 有什么方法可以获得它吗?因为我需要在应用程序内的对话框窗口中显示它。推送通知不仅仅是文本和标题,它对用户来说不仅仅是信息,它还会起到一定的作用。 在中接收通知标题、正文和有效负载: 正在从内部的附加程序捕获有效负载

  • 我正在rails 5中编写一个Api Rest,使用gem'fcm'发送通知。我已经在android应用程序中配置了firebase,我可以从firebase控制台成功发送通知,但从rails api我无法在设备中接收通知,这是我的代码: 这是我的rails控制器: 我从邮递员执行这是执行控制器的路线: http://localhost:3000/acciones/enviar?here 将设备令