当前位置: 首页 > 面试题库 >

解析云-LiveQueries-iOS客户端不起作用

羊煜
2023-03-14
问题内容

我正在尝试使用Parse LiveQueries。我使用此Parse“ Bootstrap”:“ https://github.com/parse-
community/parse-server
”,
我可以看到日志:info: Create new client: 1
但是尽管我已经订阅了,但我没有在查询中得到更新。它甚至没有到达的处理程序subscription.handle

config.json

{
  "appId": "",
  "masterKey": "",
  "appName": "",
  "cloud": "./cloud/main",
  "databaseURI": "",
  "publicServerURL": "",

  // Relevant
  "startLiveQueryServer": true,
  "liveQuery": {
    "classNames": ["Channel"]
  },
}

AppDelegate.swift

// Initialize Parse.
let configuration = ParseClientConfiguration {
    $0.applicationId = self.PARSE_APP_ID
    $0.server = self.PARSE_SERVER
}
Parse.initialize(with: configuration)

AppDelegate.liveQueryClient = ParseLiveQuery.Client()

The Subscription Code (iOS Swift):

public static func listenSubscribedChannels(handler: @escaping (_ channel: Channel) -> Void) {
    var subscription: Subscription<PFObject>?

    let query: PFQuery<PFObject> = PFQuery(className: "Channel").whereKey("subscribers", containedIn: [PFUser.current()!.objectId])

    subscription = AppDelegate.liveQueryClient!.subscribe(query).handle(Event.updated) { _, channel in
        handler(channel)
    }
}

问题答案:

这段代码的问题是您正在将该代码var subscription: Subscription<PFObject>?放置在函数中。

该对象必须能够保留其内存地址,以便接收事件。

例如。

class SomeClass {
    var objects: [PFObject] = []
    var subscription: Subscription<PFObject>?
    var subscriber: ParseLiveQuery.Client!
    let query = PFQuery(className: "Locations")

    func startListener() {
        // initialize the client
        subscriber = ParseLiveQuery.Client()

        // initialize subscriber and start subscription
        subscription = subscriber.subscribe(conversationQuery)

        // handle the event listenrs.
        _ = subscription?.handleEvent({ (_, event) in
            switch event {
            case .created(let object): 
                self.objects.append(object)
                // do stuff

            default: 
                break // do other stuff or do nothing
            }
        })
    }
}

如您从这段代码中所看到的,我将变量放置在函数定义之外,以便Subscription保留的内存地址。



 类似资料:
  • GoBelieve IM云平台,iOS 端,提供了功能齐全,性能健壮,需求完善的 IM 客户端实现,和 GoBelieve IM 云平台配套。 GoBelieve IM云平台特色: 1.一小时接入。专注IM,无冗余功能 几行代码,一小时接入 省时省力。 2.自由定制。提供最新源码, 自行二次开发,业务协议 交互视觉均可根据业务需求 自由定制。   3.完全开源。国内唯一开源IM服务,所有源码在Gi

  • 我正在使用Primefaces客户机bean验证,但它不起作用,错误消息消失,即使验证失败也会调用Listener。 示例-xhtml- 我正在使用-Primefaces 4 Jsf 2.2.6(mojarra)tomcat 7 请帮帮我。谢了。

  • Socket.IO 的开源 iOS 客户端,使用 swift 编写。 演示视频:http://fat.gfycat.com/EssentialBlueElectriceel.webm 使用示例: import Foundationlet socket = SocketIOClient(socketURL: "localhost:8880")socket.on("important message"

  • 我的Google App Engine应用程序使用旧(v1)版本的Cloud Endpoint,据我在留档中看到的建议迁移到v2 Cloud Endpoint Framework。 该应用程序使用Java标准环境,是Android和iOS客户端的后端。 目前在API的开发过程中,我同时生成Android的客户端库和iOS移动应用程序的发现文档,如文档中所述: https://cloud.googl

  • 我正在尝试像这样在客户端加密一个字符串 我试着在服务器端像这样解密。我正在使用jersey公开一个web服务。 AysmetricKeyCryptography类如下所示 当我在AsymetricKeyCryptograph类中运行main方法时,我得到了一个正确的结果,但是当我通过发送加密字符串调用Web服务时,它会抛出一个异常: 我不明白我哪里出错了

  • 问题内容: 因此我得到了一个供女巫使用的智能表,我可以重新加载整个数据集(我需要它来绘制图形)。但我不希望一次渲染所有数据(太多)。因此,在文档中有一个叫做“客户端分页”的东西,但是由于某种原因,它似乎不起作用。保存整个数据集 我的模拟是: 问题答案: 问题在于,如果异步加载数据(如果我理解您的描述,您可能会这样做),则需要告诉智能表观看源集合,以便在发生更改时可以刷新它。为此,您需要使用