react-native leancound 메시지 푸 시 방법 사용
8971 단어 react-nativeleanclound메시지 푸 시
1.등록:응용 프로그램 에 메시지 푸 시 서 비 스 를 신청 합 니 다.이 때 장치 가 APNs 서버 에 등록 요청 을 보 냅 니 다.2.APNs 서버 가 요청 을 받 아들 이 고 deviceToken 을 장치 에 있 는 응용 프로그램 에 되 돌려 줍 니 다.3.클 라 이언 트 응용 프로그램 은 deviceToken 을 백 엔 드 서버 프로그램 에 보 내 고 백 엔 드 는 받 고 저장 합 니 다.4.백 엔 드 서버 는 APNs 서버 에 푸 시 메 시 지 를 보 냅 니 다.5.APNs 서버 는 deviceToken 에 대응 하 는 장치 의 응용 프로그램 에 메 시 지 를 보 냅 니 다.
leancound 를 사용 하여 메시지 전송
장점:문서 가 뚜렷 하고 가격 이 저렴 합 니 다.
Leanclound 접속
1.우선 react-native 프로젝트 를 만들어 야 합 니 다.
react-native init projectName
2.leancloud 에서 같은 이름 의 프로젝트 를 만 들 고 appid 와 appkey 를 기록 합 니 다.3.프로젝트 생 성 성공 후 푸 시 에 필요 한 모듈 설치(프로젝트 디 렉 터 리 에 cd 필요)
1.원사 설치 사용
yarn add leancloud-storage
yarn add leancloud-installation
2.npm 설치 사용
npm install leancloud-storage --save
npm install leancloud-installation --save
4.프로젝트 디 렉 터 리 에 pushservice 라 는 폴 더 를 새로 만 들 고 js 파일 PushService.js 를 추가 하여 메시지 푸 시 를 처리 하 는 논리,1.index.js 에서 leancound 초기 화
import AV from 'leancloud-storage'
...
/*
* appid appkey
*/
const appId = 'HT23EhDdzAfFlK9iMTDl10tE-gzGzoHsz'
const appKey = 'TyiCPb5KkEmj7XDYzwpGIFtA'
/*
*
*/
AV.initialize(appId,appKey);
/*
* Installation ,
*/
global.Installation = require('leancloud-installation')(AV);
...
2.iOS 엔 드 설정우선,프로젝트 에 RCTPush Notification 을 도입 합 니 다.자세 한 내용 은 참고 하 시기 바 랍 니 다Linking Libraries - React Native docs
STEP 1:PushNotification 항목 을 iOS 홈 디 렉 터 리 로 끌 어 옵 니 다.PushNotification 경로:현재 항목/nodemodules/react-native/Libraries/PushNotificationIOS 디 렉 터 리 아래
STEP 2:libRCTPushNotification 정적 라 이브 러 리 추가,추가 방법:프로젝트 Targets-Build Phases-link binary with Libraries 클릭 으로 추가,libRCTPushNotification.a 검색 및 추가
STEP 3:푸 시 기능 오픈,방법:프로젝트 Targets-Capabilities Push 알림 을 찾 아 열기
단계 4:Appdelegate.m 파일 에 코드 추가
#import <React/RCTPushNotificationManager.h>
...
//
-(void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings{
[RCTPushNotificationManager didRegisterUserNotificationSettings:notificationSettings];
}
// Required for the register event.
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
[RCTPushNotificationManager didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}
// Required for the notification event. You must call the completion handler after handling the remote notification.
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
NSLog(@" :%@",userInfo);
[RCTPushNotificationManager didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
}
// Required for the registrationError event.
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
NSLog(@"error == %@" , error);
[RCTPushNotificationManager didFailToRegisterForRemoteNotificationsWithError:error];
}
// Required for the localNotification event.
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
NSLog(@" :%@",notification);
[RCTPushNotificationManager didReceiveLocalNotification:notification];
}
5.deviceToken 을 가 져 와 deviceToken 을 에 삽입Installation PushService 파일 을 찾 아 코드 를 작성 합 니 다.
// PushNotificationIOS
const PushNotificationIOS = require('react-native').PushNotificationIOS;
...
class PushService {
//
init_pushService = () => {
//
PushNotificationIOS. addEventListener('register',this.register_push);
//
PushNotificationIOS.requestPermissions();
}
//
register_push = (deviceToken) => {
// devicetoken
if (deviceToken) {
this.saveDeviceToken(deviceToken);
}
}
// devicetoken Installation
saveDeviceToken = (deviceToken) => {
global.Installation.getCurrent()
.then(installation => {
installation.set('deviceType', 'ios');
installation.set('apnsTopic', ' bundleid');
installation.set('deviceToken', deviceToken);
return installation.save();
});
}
}
app.js 파일 수정 componentDidMount 에서 푸 시 초기 화
import PushService from './pushservice/PushService';
...
componentDidMount () {
//
PushService.init_pushService();
}
프로젝트 를 실행 하려 면 실제 컴퓨터 가 있어 야 deviceToken 을 가 져 올 수 있 습 니 다.시 뮬 레이 터 가 가 져 올 수 없습니다.저 장 된 deviceToken 인지 확인 하 십시오.저장 에 성공 하면 leandclound 배경 에서 을 발견 할 수 있 습 니 다.Installation 표 에 데이터 가 하나 더 생 겼 습 니 다.이 단계 까지 진행 하면 이미 절반 을 완 성 했 습 니 다.지금 은 푸 시 인증서 만 설정 하면 푸 시 메 시 지 를 받 을 수 있 습 니 다.여기 서 인증서 프로 세 스 를 소개 하지 않 습 니 다.상세 한 절 차 는 참고 하 시기 바 랍 니 다iOS 푸 시 인증서 설정푸 시 인증서 설정 이 완 료 된 후에 지금 은 leancound 에 가서 푸 시 메 시 지 를 받 을 수 있 는 지 확인 하 세 요.앱 을 종료 하고 앱 을 백 스테이지 상태 로 만 듭 니 다.
메 시 지 를 받 았 는 지 보 내 려 면 누 르 십시오.
이 절 차 를 진행 한 것 은 푸 시 와 전송 이 이미 절반 이상 완성 되 었 다 는 것 을 의미한다.APP 는 다음 과 같은 기능 을 포함해 야 한다.
앱 이 프론트 데스크 에서 실 행 될 때 알림 iOS 는 알 리 지 않 습 니 다(iOS 10 이후 프론트 데스크 톱 디 스 플레이 지원).따라서 실행 해 야 할 기능 은 알림 을 받 고 프론트 에 표시 하 는 것 입 니 다.이 럴 때 모듈 을 사용 하여 이 기능 을 지원 해 야 합 니 다.바로 react-native-message-bar 입 니 다.
우선 react-native-message-bar 모듈 을 설치 하 겠 습 니 다.
yarn add react-native-message-bar //yarn
npm install react-native-message-bar --save //npm
설치 가 완료 되면 App.js 파일 에 Message Bar 를 도입 하고 등록 합 니 다.
...
/*
*
*/
const MessageBarAlert = require('react-native-message-bar').MessageBar;
const MessageBarManager = require('react-native-message-bar').MessageBarManager;
...
componentDidMount () {
//
PushService.init_pushService();
MessageBarManager.registerMessageBar(this.alert);
}
...
render() {
const {Nav} = this.state
if (Nav) {
return (
// , , MessageBarAlert alert
<View style={{flex: 1,}}>
<Nav />
<MessageBarAlert ref={(c) => { this.alert = c }} />
</View>
)
}
return <View />
}
그리고 PushService 를 수정 하여 notification 이벤트 감청 과 푸 시 메시지 에 대한 전 시 를 추가 합 니 다.
import { AppState, NativeModules, Alert, DeviceEventEmitter } from 'react-native';
...
//
init_pushService = () => {
//
PushNotificationIOS. addEventListener('register',this.register_push);
PushNotificationIOS.addEventListener('notification', this._onNotification);
//
PushNotificationIOS.requestPermissions();
}
_onNotification = ( notification ) => {
var state = AppState.currentState;
//
if (state === 'active') {
this._showAlert(notification._alert);
}
}
...
_showAlert = ( message ) => {
const MessageBarManager = require('react-native-message-bar').MessageBarManager;
MessageBarManager.showAlert({
title: ' ',
message: message,
alertType: 'success',
stylesheetSuccess: {
backgroundColor: '#7851B3',
titleColor: '#fff',
messageColor: '#fff'
},
viewTopInset : 20
});
}
...
마지막 으로 앱 을 다시 실행 하고 leancound 에서 메 시 지 를 보 내 서 앱 이 열 린 상태 에서 도 알림 을 받 을 수 있 는 지 확인 하고 여기 서 푸 시 를 하면 완 료 됩 니 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
React Native + Expo 앱을 Deploy(네이티브 빌드)이 기사에서는 까지 작성 도중의 Hello World 앱 (송장 앱 모형)을 Deploy합니다. 또한 expo-cli가 글로벌 설치되어 있다고 가정합니다. 설치했는지 모르는 경우 을 참조하십시오. Windows의 경...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.