You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中如何判断PubNub的频道是否成功完成订阅与取消订阅操作

print("Abhay4")对应的是.subscriptionChanged事件,该事件触发仅能说明客户端本地的订阅/取消订阅状态更新操作已执行完成,不能100%代表服务端已成功接收并处理你的订阅请求,也不能直接作为presence事件正常上报的依据。

具体说明和排查建议如下:

  • .subscriptionChanged是PubNub SDK的本地回调:只要你调用subscribe/unsubscribe方法,SDK完成了本地订阅列表的状态变更,就会触发该回调,所以你每次操作都能触发该打印,首先可以确认你调用订阅、取消订阅的代码逻辑本身没有语法错误,客户端已经响应了你的操作请求。
  • 要确认操作是否真正同步到服务端,你需要把该回调的change参数内容打印出来,检查以下信息:
    • 订阅操作完成后,当前已订阅的频道列表是否包含目标ch:callroom:${roomId}频道,且presence属性为开启状态
    • 取消订阅操作完成后,目标频道是否已从已订阅列表中移除
  • 你当前的代码存在逻辑冗余问题:listener全局只需要初始化1次,闭包赋值1次、调用pubnub.add(listener)1次即可,不需要每次订阅、取消订阅时重复给didReceiveSubscription赋值,也不要重复添加同一个监听器,重复操作可能会导致回调触发异常。
  • 如果确认change参数里的订阅信息符合预期,但服务端还是收不到presence事件,可以检查.connectionStatusChanged回调的status参数,确认客户端和PubNub服务端的连接是否正常,是否存在鉴权失败、网络断开等问题,如果连接异常,本地的订阅状态变更不会同步到服务端,自然不会触发对应服务端事件。

内容的提问来源于stack exchange,提问作者user10469417

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 07:00:00