iOSを使用してPubNubチャンネルにメッセージを送信すると、didReceiveMessage関数を使用してそのメッセージを取得し、それをtableViewに入れることができます。しかし、Dev Dashboardでクライアント経由でメッセージを送信した場合、message.data.messageは文字列としてキャストしようとするとnilを返します。PubNubメッセージテキストはnilを返しますか?
func client(client: PubNub, didReceiveMessage message: PNMessageResult) {
print("Received: %", message.data.message)
let newMessage:String? = message.data.message as? String
print(newMessage) // returns nil
self.messagesArray.append(newMessage!)
dispatch_async(dispatch_get_main_queue()) {
self.messageTableView.reloadData()
}
}
私はprint("Received: %", message.data.message)
からコンソールで次の応答が得られます:
Received: % Optional({
text = test;
})
しかし、print(newMessage)
はnilを返す。ここで問題になっている機能です。私は間違って何をしていますか?
ありがとうございます!
EDIT:historyForChannel関数からメッセージを取得しようとすると、同じことが起こります。
//get history
pubNub.historyForChannel("channelname" as String, withCompletion: { (result, status) -> Void in
print(status)
if status == nil {
if result!.data.messages.count > 0 {
let historyMessages = result!.data.messages.description as? [String]
print(result)
for item in historyMessages!{
self.messagesArray.append(item)
}
}
}
})
historyMessages結果のプリントにもかかわらず、nilである:
Optional({
Operation = History;
Request = {
Authorization = "not set";
Method = GET;
Origin = "pubsub.pubnub.com";
"POST Body size" = 0;
Secure = YES;
URL = "...redacted";
UUID = "...redacted";
};
Response = {
"Processed data" = {
end = 14609023551682481;
messages = (
"technically ",
{
text = "Well..ok then";
},
hi,
"really ",
{
text = "Well..ok then";
},
が、私はこれらの返されるメッセージからテキストを取得するにはどうすればよいですか?