使用 PFCloud 代码推送通知

Push Notifications with PFCloud Code

我目前使用 back4app 作为我的解析主机。

使用 Parse.Cloud.afterSave 时,我已将推送通知正确发送到所需设备。所以我可以排除服务器设置问题。

我还想检测一行何时被删除,我相信我可以使用 Parse.Cloud.beforeDelete 函数来做到这一点。

我的 Parse.Cloud.beforeDelete 函数如下所示

Parse.Cloud.beforeDelete("CallSession", function(request, response) {
  query = new Parse.Query("CallSession");
  query.equalTo("callerID", request.object.get('callerID'));

    var recieverID = request.object.get('receiverID');
    var sessionID = request.object.get('sessionID');
    var subscriberToken = request.object.get('subscriberToken');
    var publisherToken = request.object.get('publisherToken');
    var callerTitle = request.object.get('callerTitle');
    var callerImageURL = request.object.get('callerImageURL');
    var isVideoCall = request.object.get('isVideo');
    var pushID = request.object.get('pushID');
    var callerID = request.object.get('callerID');

    var callerObjectID = request.object.get('callerObjectId');
    var publicFigureObjectID = request.object.get('publicFigureObjectId');


    Parse.Push.send({
        where: query, // Set our Installation query
        data: {
            "content-available" : 1,
            "sessionID" : sessionID,
            "subscriberToken" : subscriberToken,
            "publisherToken" : publisherToken,
            "callerTitle" : callerTitle,
            "callerID" : callerID,
            "callerObjectId" : callerObjectID,
            "publicFigureObjectId" : publicFigureObjectID,
            "callerImageURL" : callerImageURL,
            "isVideo" : isVideoCall,
            "pushID" : "endCall"

        }
    },{success: function() {
        return response.success('endcall Sent OK');
    },
        error: function(error) {

            console.log('Push AfterSave Error = ' + error);

            return response.success(error);
        },
        useMasterKey: true

    });
  });

服务器日志显示正在触发 beforeDelete,但推送未发送到设备。

有人知道我上面的云函数做错了什么吗?

提前致谢

托马斯·理查森

我可以检查您在 Parse.Push.send() 中插入的数据量是否超过了 Parse Server 基本设置的预设值。您可以查看他们的 Documentation:

如果你想发送的不仅仅是一条消息,你可以在数据字典中设置其他字段。有一些保留字段有特殊含义。

  • alert:通知消息。
  • 徽章:(仅iOS)值 在应用程序图标的右上角指示。这个可以设置 到一个值或增量以增加当前值 1.
  • sound:(仅iOS)应用程序中声音文件的名称 捆。
  • 可用内容:(仅限iOS)如果您正在编写应用程序 使用 iOS7 中引入的远程通知后台模式 (a.k.a. “Background Push”),将这个值设置为1会触发一个 后台下载。
  • 类别:(仅iOS)的标识符 此推送通知的 UNNotification 类别。
  • uri: (Android 仅)包含 URI 的可选字段。通知时 打开时,将启动与打开 URI 关联的 Activity。
  • title:(仅Android)Android系统托盘中显示的值 通知。

这可以改进,但可以添加特定需求,因为您可以查看文档,您需要配置您的应用程序以拥有这些设置并处理 Cloud Code 无法处理的内容。

您可能需要考虑的另一件事是通过调试检查查询结果是否与您希望在后续代码行中使用的结果匹配(添加一些显示查询响应内容的日志就足够了) ).