【问题标题】:'PusherSwift' authenticate not called in swift'PusherSwift' 验证未在 swift 中调用
【发布时间】:2021-09-22 07:56:59
【问题描述】:

我正在尝试使用“AuthRequestBuilderProtocol”来验证 Pusher 连接。但它没有被调用,我创建了一个继承自 AuthRequestBuilderProtocol 的类 AuthRequestBuilder,如下面的代码

class AuthRequestBuilder: AuthRequestBuilderProtocol {
func requestFor(socketID: String, channelName: String) -> URLRequest? {
    print("HELLO FROM AUTH REQUEST BUILDER!")
    let request = NSMutableURLRequest(url: URL(string: "https://xxxxxxxxxx/broadcasting/auth")!)
    request.httpMethod = "POST"
    request.httpBody = "socket_id=\(socketID)&channel_name=\(channelName)".data(using: String.Encoding.utf8)
    print("socketID: \(socketID), ChannelName: \(channelName)")
    request.addValue("Bearer " + UserDefaults.standard.retreiveUserAccessToken(), forHTTPHeaderField: "Authorization")
    return request as URLRequest
}

}

在主控制器中我定义了以下变量

var client: Pusher?
var channel: PusherChannel?
var options: PusherClientOptions?
var appKey: String = "xxxx"

在 viewDidLoad 我定义了以下内容:

    override func viewDidLoad() {
    super.viewDidLoad()
    options = PusherClientOptions(
        authMethod: AuthMethod.authRequestBuilder(authRequestBuilder: AuthRequestBuilder()),
        autoReconnect: true, host: .host("xxxxxxxxxx"),
        port: 6001,
        path: "/",
        activityTimeout: 10
    )
    client = Pusher(withAppKey: appKey, options: options!)
    client?.connection.delegate = self
    channel = client?.subscribeToPresenceChannel(channelName: "presence-Room.\(idOfRooms ?? 0)")
    client?.connect()
    print(channel?.name ?? "")
    print(channel?.subscribed ?? "")
    print(channel?.type ?? "")
    print(channel?.unsentEvents ?? "")
    
    // bind to all events globally
    let _ = client?.bind(eventCallback: { (event: PusherEvent) in
        var message = "Received event: '\(event.eventName)'"
        
        if let channel = event.channelName {
            message += " on channel '\(channel)'"
        }
        if let userId = event.userId {
            message += " from user '\(userId)'"
        }
        if let data = event.data {
            message += " with data '\(data)'"
        }
        
        print(message)
    })}

当我在 viewDidLoad 中调用时未调用 AuthRequestBuilder 的问题,所以我在订阅存在频道时遇到问题,知道如何解决问题

【问题讨论】:

  • 委托是否定义了任何错误回调?如果是,它们显示了什么?是否需要保留 bind 的返回值才能接收事件? Pusher 是否有可以设置然后检查错误日志的调试选项?

标签: ios swift xcode pusherswift


【解决方案1】:

我上面提供的所有方法都是正确的!问题是后端服务器版本与最新版本的 PusherSwift 不兼容,所以我从 10.0.0 降级到 8.0.0

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-19
    • 2019-05-10
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 2018-05-15
    • 2016-08-10
    相关资源
    最近更新 更多