我在expo中有一个现有的应用程序在react native中创建。在该应用程序中,我必须添加expo推送通知功能。我使用以下链接创建了NotificationController:https://docs.expo.io/versions/v32.0.0/guides/push-notifications
我现在需要知道我必须把这个控制器放在哪里。我是移动开发领域的新手,只需要帮助正确放置这个控制器,这样我们就可以向客户展示这一点。
创建推送通知服务后,它可以是服务目录中单个文件中的函数(如果不存在,则创建),也可以是组件。
然后在你的主应用程序.js中导入该函数,并在componentDidMount生命周期函数中使用它。这只是一个示例代码,我相信这还可以进一步改进,但这已经足够开始了。
push_notification.js
import {Permissions, Notifications} from 'expo';
import { ActivityIndicator, AsyncStorage} from 'react-native';
export default async () => {
try{
let previousToken = await AsyncStorage.getItem('pushToken');
if(previousToken){
return;
}else{
let {status} = await Permissions.askAsync(Permissions.NOTIFICATIONS);
console.log(status);
if(status !== 'granted'){
console.log("Don't like to receive push");
}
let token = await Notifications.getExpoPushTokenAsync();
return token;
}
} catch(err){
console.log(err);
}
};
App.js
import PushNotification from "../services/push_notifications";
import axios from 'axios';
async componentDidMount(){
let tokenFromStorage = await zlAsyncStorage.getItem('pushToken');
console.log('token from storage',tokenFromStorage);return;
let token = await PushNotification();
AsyncStorage.setItem('pushToken',token);
console.log("here");
//Save the token in couch db
await axios({
url:"http://192.168.8.148:5984/mycompany",
method: 'post',
timeout: 1000,
headers: {
'Accept-Encoding' : 'gzip, deflate',
'Content-Type':'application/json',
'Authorization':'Basic YTph'
},
data: {
user: "cheran",
tokenReceived : token,
},
auth: {
username: 'a',
password: 'a'
},
}).then(function(response){
//console.log(response);
});
}