From 20197f6842a9848d93e19e602298e577cb287cb6 Mon Sep 17 00:00:00 2001 From: hupeng Date: Fri, 15 Mar 2019 15:50:50 +0800 Subject: [PATCH] =?UTF-8?q?[=E7=B3=BB=E7=BB=9F][=E4=BF=AE=E6=94=B9]:?= =?UTF-8?q?=E5=BC=80=E6=9C=BA=E8=81=94=E7=BD=91,=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=A3=80=E6=9F=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- App.js | 95 +++++++++++-------- HttpUtils.js | 2 - android/app/src/main/AndroidManifest.xml | 7 ++ .../screenad/AutoStartBroadcastReceiver.java | 22 +++++ 4 files changed, 84 insertions(+), 42 deletions(-) create mode 100644 android/app/src/main/java/com/screenad/AutoStartBroadcastReceiver.java diff --git a/App.js b/App.js index 48f22e9..b426065 100644 --- a/App.js +++ b/App.js @@ -19,7 +19,7 @@ import DeviceInfo from "react-native-device-info"; import * as Animatable from 'react-native-animatable'; -var testMac = '11:AA:33:BB:44' +var testMac = 'FF:FF:FF:FF:FF:FF' var contentItemDefault = { type:0, @@ -44,8 +44,8 @@ var baseInfoDefault = { var curAdIndex = 0; var errorMsg = { - ERR_MAC_GET:'MAC地址获取错误', - ERR_DATA_GET:'数据获取错误' + ERR_MAC_GET:'设备编号获取错误', + ERR_DATA_GET:'广告数据获取错误' } @@ -62,8 +62,8 @@ export default class MyPage extends Component { contentDisplayStatus:false, - syncMessage: "Init" , - errorMessage: 'Loading...', + syncMessage: "初始化..." , + errorMessage: '加载中...', progress: { receivedBytes:0, @@ -110,6 +110,9 @@ codePushStatusDidChange(syncStatus) { } updateContent() { + if (this.state.adDataList.length <=0) + return false; + if (curAdIndex >= this.state.adDataList.length) { curAdIndex = 0 } @@ -127,6 +130,7 @@ codePushStatusDidChange(syncStatus) { this.setState({contentItem2:null}); curAdIndex+=3 + return true; } hbRequest() { @@ -140,50 +144,49 @@ codePushStatusDidChange(syncStatus) { } getAdDataList() { - HttpUtils.get(NativeModules.BuildConfig.apiHost + 'api/wxDeviceScreenAd/list?deviceId='+encodeURIComponent(this.state.macAddress)+'&pageNum=1&pageSize=1000') - .then(result => { + HttpUtils.get(NativeModules.BuildConfig.apiHost + 'api/wxDeviceScreenAd/list?deviceId='+encodeURIComponent(this.state.macAddress)+'&pageNum=1&pageSize=1000') + .then((result) => { if (result.code != 200) { - this.setState({errorMessage : result.message}); this.setState({contentDisplayStatus: false}) - } - if (result.data.list) { + this.setState({errorMessage : result.message+'\n'+this.state.macAddress}); + } else if (result.data.list) { this.setState({adDataList : result.data.list}); - this.updateContent(); + if (this.updateContent()) { + this.setState({contentDisplayStatus: true}) + } } else { - this.setState({errorMessage : errorMsg.ERR_DATA_GET}); this.setState({contentDisplayStatus: false}) + this.setState({errorMessage : errorMsg.ERR_DATA_GET}); } }) .catch(error => { - console.error(error) - this.setState({errorMessage : error}); this.setState({contentDisplayStatus: false}) + this.setState({errorMessage : error.message}); }) + } getBaseInfo() { - HttpUtils.get(NativeModules.BuildConfig.apiHost + 'api/wxDeviceScreenAd/info?deviceId='+encodeURIComponent(this.state.macAddress)) + + HttpUtils.get(NativeModules.BuildConfig.apiHost + 'api/wxDeviceScreenAd/info?deviceId='+encodeURIComponent(this.state.macAddress)) .then(result => { if (result.code != 200) { - this.setState({errorMessage : result.message}); this.setState({contentDisplayStatus: false}) - } - if (result.data) { + this.setState({errorMessage : result.message+'\n'+this.state.macAddress}); + } else if (result.data) { this.setState({baseInfo:result.data}); - } - else { - this.setState({errorMessage : errorMsg.ERR_DATA_GET}); + } else { this.setState({contentDisplayStatus: false}) + this.setState({errorMessage : errorMsg.ERR_DATA_GET}); } }) .catch(error => { - console.error(error) - this.setState({errorMessage : error}); this.setState({contentDisplayStatus: false}) + this.setState({errorMessage : error.message}); }) + } - componentDidMount() { CodePush.allowRestart(); CodePush.sync( @@ -199,34 +202,46 @@ componentDidMount() { this.setState({ versionInfo: "Unknown"}); }); - DeviceInfo.getMACAddress().then(mac=>{ - if (mac=='') { - this.startAd(testMac) - } else { - this.startAd(mac) - } - this.setState({ contentDisplayStatus: true}) - }).catch(e => { - this.setState({errorMessage : errorMsg.ERR_MAC_GET}); - }) + DeviceInfo.getMACAddress().then((mac)=>{ + if (mac=='') { + if (NativeModules.BuildConfig.buildType == 'debug') { + this.setState({macAddress : this.testMac}) + this.startAd() + } else { + this.setState({ contentDisplayStatus: false}) + this.setState({ errorMessage : errorMsg.ERR_MAC_GET}); + } + } else { + this.setState({macAddress : mac}) + this.startAd() + } + this.setState({ contentDisplayStatus: true}) + }).catch(e => { + this.setState({ contentDisplayStatus: false}) + this.setState({ errorMessage : errorMsg.ERR_MAC_GET}); + }) } -startAd(mac) { +startAd() { this.getBaseInfo() this.getAdDataList() setInterval( ()=>{ - this.setState({ contentDisplayStatus: false}) - this.updateContent(); - this.setState({ contentDisplayStatus: true}) + if (this.state.contentDisplayStatus) { + this.setState({ contentDisplayStatus: false}) + if (this.updateContent()) { + this.setState({ contentDisplayStatus: true}) + } + } else { + this.getBaseInfo() + this.getAdDataList() + } }, 1000*10, //10秒更新一下页面 ); setInterval( ()=>{ - this.setState({ contentDisplayStatus: false}) this.getAdDataList() - this.setState({ contentDisplayStatus: true}) }, 1000*60*60, //1小时一次 ); diff --git a/HttpUtils.js b/HttpUtils.js index c6828ac..5c8ac5b 100644 --- a/HttpUtils.js +++ b/HttpUtils.js @@ -10,7 +10,6 @@ export default class HttpUtil { fetch(url) .then(response => response.json()) .then(result => resolve(result)) - .catch(error => reject(error)) }) } @@ -32,7 +31,6 @@ export default class HttpUtil { }) .then(response => response.json()) .then(result => resolve(result)) - .catch(error => reject(error)) }) } } diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index fffc697..fe1cc5f 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -4,6 +4,7 @@ + + + + + + + diff --git a/android/app/src/main/java/com/screenad/AutoStartBroadcastReceiver.java b/android/app/src/main/java/com/screenad/AutoStartBroadcastReceiver.java new file mode 100644 index 0000000..bba55d5 --- /dev/null +++ b/android/app/src/main/java/com/screenad/AutoStartBroadcastReceiver.java @@ -0,0 +1,22 @@ +package com.screenad; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; + + +//开机自启动广播接受 +public class AutoStartBroadcastReceiver extends BroadcastReceiver { + static final String action_boot ="android.intent.action.BOOT_COMPLETED"; + @Override + public void onReceive(Context context, Intent intent) { + if (intent.getAction().equals(action_boot) && !BuildConfig.BUILD_TYPE.equals("debug")){ + Intent sayHelloIntent=new Intent(context,MainActivity.class); + + sayHelloIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + + context.startActivity(sayHelloIntent); + } + } + +} \ No newline at end of file