import React, { Component } from 'react'; import { Platform, StyleSheet, Text, View, Image, Dimensions, TouchableOpacity, } from 'react-native'; //引用插件 import Swiper from 'react-native-swiper'; import HttpUtils from './HttpUtils.js'; import CodePush from "react-native-code-push"; // 取得屏幕的宽高Dimensions const { width, height } = Dimensions.get('window'); export default class MyPage extends Component { constructor(props) { super(props); this.state = { swiperShow: false, text:'', qrcode:[], restartAllowed: true , syncMessage: "我是小更新" , progress: false }; } // 监听更新状态 codePushStatusDidChange(syncStatus) { switch(syncStatus) { case CodePush.SyncStatus.CHECKING_FOR_UPDATE: this.setState({ syncMessage: "Checking for update." }); break; case CodePush.SyncStatus.DOWNLOADING_PACKAGE: this.setState({ syncMessage: "Downloading package." }); break; case CodePush.SyncStatus.AWAITING_USER_ACTION: this.setState({ syncMessage: "Awaiting user action." }); break; case CodePush.SyncStatus.INSTALLING_UPDATE: this.setState({ syncMessage: "Installing update." }); break; case CodePush.SyncStatus.UP_TO_DATE: this.setState({ syncMessage: "App up to date.", progress: false }); break; case CodePush.SyncStatus.UPDATE_IGNORED: this.setState({ syncMessage: "Update cancelled by user.", progress: false }); break; case CodePush.SyncStatus.UPDATE_INSTALLED: this.setState({ syncMessage: "Update installed and will be applied on restart.", progress: false }); break; case CodePush.SyncStatus.UNKNOWN_ERROR: this.setState({ syncMessage: "An unknown error occurred.", progress: false }); break; } } codePushDownloadDidProgress(progress) { this.setState({ progress }); } // 允许重启后更新 toggleAllowRestart() { this.state.restartAllowed ? CodePush.disallowRestart() : CodePush.allowRestart(); this.setState({ restartAllowed: !this.state.restartAllowed }); } // 获取更新数据 getUpdateMetadata() { CodePush.getUpdateMetadata(CodePush.UpdateState.RUNNING) .then((metadata: LocalPackage) => { this.setState({ syncMessage: metadata ? JSON.stringify(metadata) : "Running binary version", progress: false }); }, (error: any) => { this.setState({ syncMessage: "Error: " + error, progress: false }); }); } /** Update is downloaded silently, and applied on restart (recommended) 自动更新,一键操作 */ sync() { CodePush.sync( {}, this.codePushStatusDidChange.bind(this), this.codePushDownloadDidProgress.bind(this) ); } /** Update pops a confirmation dialog, and then immediately reboots the app 一键更新,加入的配置项 */ syncImmediate() { CodePush.sync( { installMode: CodePush.InstallMode.IMMEDIATE, updateDialog: true }, this.codePushStatusDidChange.bind(this), this.codePushDownloadDidProgress.bind(this) ); } // 轮播图 renderBanner() { if (this.state.swiperShow) { console.log ('返回值' + this.state.swiperShow); return ( ); } else { return ( {this.state.text} ); } } get() { HttpUtils.get('https://mall.youlane.cn/api/wxDeviceScreenAd/list?deviceId=11%3AAA%3A33%3ABB%3A44&pageNum=1&pageSize=5') .then(result => { this.setState({ text: JSON.stringify, qrcode: result.data.list[0].qrcode}); }) .catch(error => console.error(error)) } componentDidMount() { this.get() setTimeout(() => { this.setState({ swiperShow: true, }); }, 10000) } render() { let progressView; if (this.state.progress) { progressView = ( {this.state.progress.receivedBytes} of {this.state.progress.totalBytes} bytes received ); } return ( 可以修改此处文字,查看是否更新成功! Press for background sync Press for dialog-driven sync {progressView} Restart { this.state.restartAllowed ? "allowed" : "forbidden"} Press for Update Metadata {this.state.syncMessage || ""} ); /* return ( {this.renderBanner()} ); */ } } const styles = StyleSheet.create({ container: { width:width, height:height, flex:1 }, wrapper: { width:width, height:height, flex:1 }, bannerImg: { width:width, height:height, flex:1 }, container: { flex: 1, alignItems: "center", backgroundColor: "#F5FCFF", paddingTop: 50 }, image: { margin: 30, width: Dimensions.get("window").width - 100, height: 365 * (Dimensions.get("window").width - 100) / 651, }, messages: { marginTop: 30, textAlign: "center", }, restartToggleButton: { color: "blue", fontSize: 17 }, syncButton: { color: "green", fontSize: 17 }, welcome: { fontSize: 20, textAlign: "center", margin: 20 }, });