亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

react-native使用leanclound消息推送的方法

2019-11-19 13:20:12
字體:
來源:轉載
供稿:網友

iOS消息推送的基本流程

1.注冊:為應用程序申請消息推送服務。此時你的設備會向APNs服務器發送注冊請求。2. APNs服務器接受請求,并將deviceToken返給你設備上的應用程序 3.客戶端應用程序將deviceToken發送給后臺服務器程序,后臺接收并儲存。 4.后臺服務器向APNs服務器發送推送消息 5.APNs服務器將消息發給deviceToken對應設備上的應用程序

使用leanclound進行消息推送

優勢:文檔清晰,價格便宜

接入Leanclound

1.首先需要創建一個react-native項目

react-native init projectName

2.在leancloud創建一個同名項目,并記錄好appid和appkey

3.項目創建成功后,安裝推送所需的模塊(需要cd到工程目錄)

1.使用yarn安裝

yarn add leancloud-storageyarn add leancloud-installation

2.使用npm安裝

npm install leancloud-storage --savenpm install leancloud-installation --save

4.在項目目錄下新建一個文件夾,名字為pushservice,在里面添加一個js文件PushService.js,處理消息推送的邏輯,

1.在index.js初始化leanclound

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端配置

首先,在項目中引入RCTPushNotification,詳情請參考: Linking Libraries - React Native docs

步驟一:將PushNotification項目拖到iOS主目錄,PushNotification路徑:當前項目/node_modules/react-native/Libraries/PushNotificationIOS目錄下

步驟二:添加libRCTPushNotification靜態庫,添加方法:工程Targets-Build Phases-link binary with Libraries 點擊添加,搜索libRCTPushNotification.a并添加

步驟三:開啟推送功能,方法:工程Targets-Capabilities 找到Push Notification并打開

步驟四:在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 *)userInfofetchCompletionHandler:(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文件,編寫代碼

//引用自帶PushNotificationIOSconst 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推送證書設置,推送證書設置完成后,現在就去leanclound試試看能不能收到推送吧,退出APP,讓APP處于后臺狀態,

點擊發送,看是不是收到了消息.

進行到這步驟說明推送已經完成了一大半了,APP當然還需要包括以下功能:

  • APP在前臺、后臺或者關閉狀態下也能收到推送消息
  • 點擊通知能夠對消息進行操作,比如跳轉到具體頁面

APP處于前臺狀態時通知的顯示

當APP在前臺運行時的通知iOS是不會提醒的(iOS10后開始支持前臺顯示),因此需要實現的功能就是收到通知并在前端顯示,這時候就要使用一個模塊來支持該功能了,那就是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文件中引入并注冊MessageBar

.../**引入展示通知模塊 */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 }); } ...

最后重新運行APP并在leanclound發送一條消息,看是否在APP打開狀態也能收到通知,到了這里推送就完成了

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国内伊人久久久久久网站视频| 国产精品91久久久久久| 国产成人免费av电影| 日本三级久久久| 日韩av网站在线| 成人久久精品视频| 国内精品久久久久久中文字幕| 亚洲二区在线播放视频| 欧美精品福利视频| 国产精品久久久久一区二区| 午夜精品久久久久久99热| 欧美第一黄色网| 91麻豆国产语对白在线观看| 精品国产一区二区三区久久狼黑人| 亚洲女性裸体视频| 国产精品视频自拍| 亚洲裸体xxxx| 日韩av毛片网| 奇米4444一区二区三区| 欧美激情中文字幕在线| 国产精品av在线播放| 国产精品久久久av| 久久视频这里只有精品| 中文字幕日韩电影| 久久伊人免费视频| 中国人与牲禽动交精品| 欧美成人三级视频网站| 精品日韩视频在线观看| 国产精品成人在线| 亚洲视频999| 亚洲欧美日韩精品| 成人午夜激情网| 亚洲一区中文字幕在线观看| 久久人人爽人人爽人人片av高清| 欧美国产日韩中文字幕在线| 亚洲国产成人在线播放| 国产精品稀缺呦系列在线| 国产精品久久久久久久7电影| 日av在线播放中文不卡| 亚洲专区国产精品| 欧美在线中文字幕| 88国产精品欧美一区二区三区| 亚洲最大福利网站| 国产一区二区香蕉| 成人xvideos免费视频| 日韩精品中文在线观看| 国产丝袜精品第一页| 在线观看免费高清视频97| 欧美一区二区三区四区在线| 国产成人精品日本亚洲专区61| 欧美巨乳在线观看| 5278欧美一区二区三区| 中文字幕欧美专区| 精品一区电影国产| 久久精视频免费在线久久完整在线看| 精品久久久久久久久中文字幕| 日韩中文av在线| 国产精品美女久久久免费| 欧美日韩一二三四五区| 欧美激情乱人伦一区| 国产精品jvid在线观看蜜臀| 一区二区三区高清国产| 国产啪精品视频| 国产v综合ⅴ日韩v欧美大片| 国产精品亚洲片夜色在线| 欧美成人国产va精品日本一级| 亚洲天堂av网| 97精品伊人久久久大香线蕉| 中文字幕最新精品| 色妞欧美日韩在线| 久久久国产精彩视频美女艺术照福利| 亚洲free性xxxx护士hd| 中日韩午夜理伦电影免费| 国产精品v日韩精品| 欧美最猛性xxxxx(亚洲精品)| 久久精视频免费在线久久完整在线看| 38少妇精品导航| 日韩中文娱乐网| 国产精品扒开腿做爽爽爽的视频| 国产精品av网站| 91欧美日韩一区| 欧美放荡办公室videos4k| 日韩欧美aⅴ综合网站发布| 欧美性生交xxxxxdddd| 国产精品美女免费看| 欧美激情亚洲国产| 久久综合色88| 欧美日韩在线观看视频小说| 欧美色视频日本版| 欧美激情国产高清| 青草青草久热精品视频在线网站| 欧美日韩一区二区三区在线免费观看| 欧美日韩高清在线观看| 国产亚洲精品久久久久久777| 欧美在线视频在线播放完整版免费观看| 久久亚洲影音av资源网| 8090理伦午夜在线电影| 日韩在线观看高清| 欧美一区二区三区精品电影| 日韩精品亚洲元码| 国产精品视频专区| 一区二区三区 在线观看视| 欧美日韩aaaa| 成人性生交大片免费看视频直播| 国产精品久久久久77777| 日韩国产一区三区| 国产成人精品久久二区二区| 粉嫩老牛aⅴ一区二区三区| 精品国产一区二区三区久久狼黑人| 亚洲一区二区三区在线视频| 国产性猛交xxxx免费看久久| 亚洲精品福利免费在线观看| 国产精品亚洲片夜色在线| 欧亚精品中文字幕| 91免费的视频在线播放| 亚洲欧洲自拍偷拍| 国产丝袜一区二区三区| 亚洲国产成人av在线| 精品性高朝久久久久久久| 亚洲欧美制服丝袜| 欧洲精品毛片网站| 久久av在线看| 久久精品一偷一偷国产| 日韩精品在线第一页| 日韩免费电影在线观看| 国产精品毛片a∨一区二区三区|国| 欧美亚洲午夜视频在线观看| 久久精品中文字幕电影| 精品视频在线播放色网色视频| 91精品国产精品| 黄色精品在线看| 久久久999成人| 日韩专区在线播放| 国产精品黄页免费高清在线观看| 国产偷亚洲偷欧美偷精品| 国产mv久久久| 久久天堂电影网| 久久久精品网站| 91av视频在线| 亚洲精品丝袜日韩| 亚洲福利在线观看| 亚洲a级在线播放观看| 成人免费看片视频| 日韩精品免费看| 成人免费xxxxx在线观看| 亚洲欧美日韩精品久久| 伊人伊人伊人久久| 97超碰蝌蚪网人人做人人爽| 国产精品国产亚洲伊人久久| 久久理论片午夜琪琪电影网| 欧美精品在线观看91| 成人精品aaaa网站| 欧美另类精品xxxx孕妇| 欧美成人精品一区二区三区| 欧美激情国产日韩精品一区18| 欧美视频专区一二在线观看| 久久av.com| 精品视频一区在线视频| 国产成人jvid在线播放| 亚洲色图综合久久| 久久综合国产精品台湾中文娱乐网| 国产精品18久久久久久首页狼| 日韩av电影院| 亚洲欧洲av一区二区|