2016-04-17 13 views
0

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"; 
       }, 

が、私はこれらの返されるメッセージからテキストを取得するにはどうすればよいですか?

答えて

1

状態オブジェクトをプリントアウトフェッチどんな歴史の行動と事実から、あなたはおそらくcipherKeyを使用してクライアントを設定して何を意味しています。そのステータスおそらくカテゴリが復号化エラーに設定されています。
暗号化を使用する場合は、すべてのクライアントで同じ鍵を使用する必要があります。そうしないと、送信されたメッセージを復号化できません。 cipherKeyが設定されている場合、クライアントは自動的にデータの復号化を試み、通常のテキストを受信すると失敗します。

同じのcipherKeyで設定されているか(コンソールとiOSクライアント)、または必要がない場合は、どのクライアントにも設定されていないことを確認してください。

お礼、 Sergey。

関連する問題