Push-уведомление в существующем выставочном проекте - PullRequest
0 голосов
/ 17 января 2019

У меня есть существующее приложение в expo create в реагирующем. В этом приложении я должен добавить функциональность push-уведомлений expo. Я создал NotificationController, используя ссылку ниже: https://docs.expo.io/versions/v32.0.0/guides/push-notifications

Теперь мне нужно знать, где я должен разместить этот контроллер. Я очень новичок в разработке мобильных приложений, и мне просто нужна помощь по правильному размещению этого контроллера, чтобы мы могли показать это клиенту.

1 Ответ

0 голосов
/ 17 января 2019

После того, как вы создали службу push-уведомлений, это может быть либо функция в одном файле в каталоге с вашими службами (создайте, если он не существует), либо компонент.

Затем импортируйте эту функцию в ваш основной app.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);
    });


  }

...