2016-10-12 1 views
0

Я использую Pubnub для ввода и вытаскивания данных в приложение React Native, где я показываю его в списке. По какой-то причине обратный вызов истории никогда не достигается, хотя я получаю сообщения через канал, на который я подписался. Хранение & воспроизведение включено. Любая идея, что здесь происходит?Ошибка обратного вызова истории Pubnub не достигнута в ответе на собственное приложение

import React from 'react' 
import { 
    StyleSheet, 
    Text, 
    View, 
    TouchableHighlight, 
    ListView, 
} from 'react-native' 

import PubNub from 'pubnub'; 

var username = 'Jenny'; 
const channel = 'list'; 

const publish_key = 'XXXXXXXXXXXXXXXXXXXXXXXXX'; 
const subscribe_key = 'XXXXXXXXXXXXXXXXXXXXXXXXX'; 

const listSections = ['NOW', 'LATER', 'PROJECTS']; 

const pubnub = new PubNub({       
    publishKey : publish_key, 
    subscribeKey : subscribe_key, 
    ssl: true, 
    uuid: username 
}); 

export default class MyList extends React.Component{ 

    constructor(){ 
     super(); 
     var ds = new ListView.DataSource({ 
      getSectionHeaderData: (dataBlob, sectionID) => dataBlob[sectionID], 
      getRowData: (dataBlob, sectionID, rowID) => dataBlob[sectionID + ':row' + rowID], 
      rowHasChanged: (row1, row2) => row1 !== row2, 
      sectionHeaderHasChanged : (s1, s2) => s1 !== s2, 
      }); 
     } 
    } 


    componentWillMount() { 

     this.connect(); 

     pubnub.addListener({ 
      message: (m) => this.success([m.message]) 
     }); 

     pubnub.subscribe({ 
      channels: [channel], 
     }); 

    } 

    connect() { 
     console.log("connect"); 

     pubnub.history(
      { 
      channel: channel, 
      count: 50, 
      callback: (response) => { 
       console.log(response); 
      } 
     ); 
    } 

    success(m){  
     /*Do some data manipulation for the list here */ 

    } 

    render(){ 

     return(
      <View style={styles.container}> 
       <ListView 
        dataSource = {this.state.dataSource} 
        renderRow = {(rowData) => 
        <View style={styles.rowContainer}> 
         <Text style={styles.rowText}>{rowData}</Text> 
        </View>} 
        renderSectionHeader = {(headerData) => 
         <Text style={styles.header}>{headerData}</Text>} 
        enableEmptySections = {true} 
       /> 
      </View> 
      ) 
    } 
} 

ответ

0

Вы используете наш v4 JavaScript SDK. Ваш callback должен быть отдельный параметр:

pubnub.history(
    { 
     channel: channel, 
     count: 50 
    }, 
    function (status, response) { 
     console.log(status, response); 
    } 
); 

Это тонкое изменение в v4, и вы можете просмотреть v3 to v4 migration guide для других незначительных изменений.

+1

Amazing. Работает сейчас. Спасибо! –

Смежные вопросы