ios - 在 react native 应用程序中未达到 Pubnub 历史回调

标签 ios react-native pubnub

我正在使用 Pubnub 将数据推送和拉取到 React Native 应用程序中,我在其中将数据显示在列表中。由于某种原因,历史回调从未到达,尽管我通过我订阅的 channel 获取消息。存储和播放已启用。知道这里发生了什么吗?

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>
            )
    }
}

最佳答案

您正在使用我们的 v4 JavaScript SDK .您的回调 需要是一个单独的参数:

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

这是 v4 中的细微变化,您可以查看 v3 to v4 migration guide其他小的变化。

关于ios - 在 react native 应用程序中未达到 Pubnub 历史回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40007788/

相关文章:

ios - 比较 If 中的枚举类型

ios - React-Native-Text-Detector 在 Android 中工作正常,但为什么在 iOS 中总是返回 false?

react-native - 当行的高度可变时,FlatList 的滚动问题

javascript - 通过 expo 构建的 apk 未安装在 Android 上

node.js - PubNub安全组管理

android - PubNub 映射错误

ios - Xcode 9 - Alamofire pod 。命令/bin/sh 失败,退出代码为 1

ios - 如何制作没有可见轴且完全填满 View 的折线图?

ios - 组合声音和 UILocalNotification

laravel-5 - laravel 对于实时应用程序有什么好处?