Access PNMessageResult in PubNub Swift

See link

Based on the following function, I can get an answer,

func client(client: PubNub!, didReceiveMessage message: PNMessageResult!) { println(message) 

But I can access the data only as message.data, which is in PNMessageData format.

Even this returns data in the following format:

 { message = "{}"; subscribedChannel = 123; timetoken = 14392105288780634;} 

How do I access the message value inside message.data (PNMessageData)?

+4
source share
2 answers

I wrote a simple method to analyze PNMessageResult

 func client(_ client: PubNub, didReceiveMessage message: PNMessageResult) { //Message Received on Channel: let channel = message.data.channel //Message Received: guard let messageData = message.data.message as? [String : AnyObject] else { return } //Event: guard let event:String = messageData["event"] as? String let data:AnyObject = messageData["data"] else { return } guard let dict = data as? NSDictionary else { fatalError("Couldn't parse pubnub message") } //This will be message in dictionary let mutableDict = dict.mutableCopy() as! NSMutableDictionary } 
+1
source

You are very close to accessing data. The SDK serializes the received JSON and saves the message as a dictionary on message.data.message , which should be a dictionary.

Try the following:

 func client(client: PubNub!, didReceiveMessage message: PNMessageResult!) { let dictionary: AnyObject = message.data.message println(dictionary["accelertiony"]); println(dictionary["accelerationx"]); } 
0
source

All Articles