GoogleCast iOS 发件人,v4,未发送消息
GoogleCast iOS sender, v4, not sending messages
在版本 2 中,发件人应用能够发送消息。
func deviceManager(_ deviceManager: GCKDeviceManager!,
didConnectToCastApplication
applicationMetadata: GCKApplicationMetadata!,
sessionID: String!,
launchedApplication: Bool) {
deviceManager.add(self.textChannel)
}
但是,API 说我们现在使用的是 GCKSessionManager 而不是 GCKDeviceManager。
API 说我必须有一个 GCKSession 添加 textChannel,我在这里做了:
会话开始后,我添加了 textChannel(因为 sessionManager.currentCastSession 在会话开始之前为 nil)。
func sessionManager(_ sessionManager: GCKSessionManager, didStart session: GCKSession) {
if session.device == connectionQueue {
connectionQueue = nil
}
self.sessionManager!.currentCastSession!.add(textChannel)
print("")
}
同时,我在另一个函数中发送短信:
let result = self.textChannel.sendTextMessage("\(self.textField.text)", error: &error)
但是结果总是假的,错误总是"Channel is not connected or is not registered with a session"。
此外,当我这样做时:
print("isConnected1 \(self.textChannel.isConnected)")
结果为假。
你知道我还缺少哪些连接步骤吗?
刚刚得知这是我的命名空间的问题。它现在连接。
问题是名称空间与我的接收器代码中的名称空间不匹配。
fileprivate lazy var textChannel:TextChannel = {
return TextChannel(namespace: NAMESPACE)
}()
在版本 2 中,发件人应用能够发送消息。
func deviceManager(_ deviceManager: GCKDeviceManager!,
didConnectToCastApplication
applicationMetadata: GCKApplicationMetadata!,
sessionID: String!,
launchedApplication: Bool) {
deviceManager.add(self.textChannel)
}
但是,API 说我们现在使用的是 GCKSessionManager 而不是 GCKDeviceManager。
API 说我必须有一个 GCKSession 添加 textChannel,我在这里做了: 会话开始后,我添加了 textChannel(因为 sessionManager.currentCastSession 在会话开始之前为 nil)。
func sessionManager(_ sessionManager: GCKSessionManager, didStart session: GCKSession) {
if session.device == connectionQueue {
connectionQueue = nil
}
self.sessionManager!.currentCastSession!.add(textChannel)
print("")
}
同时,我在另一个函数中发送短信:
let result = self.textChannel.sendTextMessage("\(self.textField.text)", error: &error)
但是结果总是假的,错误总是"Channel is not connected or is not registered with a session"。 此外,当我这样做时:
print("isConnected1 \(self.textChannel.isConnected)")
结果为假。 你知道我还缺少哪些连接步骤吗?
刚刚得知这是我的命名空间的问题。它现在连接。 问题是名称空间与我的接收器代码中的名称空间不匹配。
fileprivate lazy var textChannel:TextChannel = {
return TextChannel(namespace: NAMESPACE)
}()