-
Notifications
You must be signed in to change notification settings - Fork 1
/
index.ios.js
92 lines (86 loc) · 2.38 KB
/
index.ios.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/**
* Sample React Native LeanCloud Notification App
*/
'use strict';
var React = require('react-native');
var {
AppRegistry,
StyleSheet,
Text,
View,
PushNotificationIOS,
} = React;
var AV = require('leancloud-storage');
AV.initialize('NE1T3uRn8zjIWsmETEbsqpEu', '5K5HYy0wUmhryfKyQY2w1GtT');
var Installation = require('leancloud-installation')(AV);
var logs = [];
var startTime = Date.now();
var installationDemo = React.createClass({
getInitialState: function() {
return {logs};
},
componentDidMount: function() {
this.log('Subscribe to register event of PushNotificationIOS.');
PushNotificationIOS.addEventListener('register', this._onRegister);
this.log('PushNotificationIOS.requestPermissions()');
PushNotificationIOS.requestPermissions();
},
componentWillUnmount: function() {
PushNotificationIOS.removeEventListener('register', this._onRegister);
},
log: function(text) {
text = '[' + (Date.now() - startTime) + 'ms] ' + text;
logs.push(text);
this.setState({logs});
console.log(text);
},
_onRegister: function(deviceToken) {
this.log('_onRegistered called with deviceToken: ' + deviceToken);
Installation.getCurrent()
.then(installation => {
this.log('Current installaton got: ' + JSON.stringify(installation.toJSON()));
this.log('Set new deviceToken and save.');
return installation.save({
deviceToken: deviceToken
});
})
.then(installation => {
this.log('Installation updated: ' + JSON.stringify(installation.toJSON()));
PushNotificationIOS.presentLocalNotification({
alertBody: 'Installation updated.'
});
})
.catch(error => this.log(error));
},
render: function() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
LeanCloud Installation React Native Demo
</Text>
<Text style={styles.instructions}>
{this.state.logs.join('\n')}
</Text>
</View>
);
}
});
var styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 22,
margin: 10,
},
instructions: {
color: '#333333',
fontSize: 16,
lineHeight: 24,
margin: 10,
},
});
AppRegistry.registerComponent('installationDemo', () => installationDemo);