react-native-aliyun-push (極光推送同胞阿里云推送)

個(gè)人感覺阿里云推送比極光推送要好配置些(有免費(fèi)5萬(wàn)條的推送哦,感覺像是打廣告哈哈~),需要的可以看下??

react-native-aliyun-push需要注冊(cè)(請(qǐng)參考阿里云移動(dòng)推送文檔)

安裝

npm install react-native-aliyun-push --save
react-native link react-native-aliyun-push

android配置

  1. 在android根目錄下build.gradle配置以下代碼:
allprojects {
    repositories {
        mavenLocal()
        jcenter()
        maven {
            // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
            url "$rootDir/../node_modules/react-native/android"
        }
        // 下面是添加的代碼
        maven {
            url "http://maven.aliyun.com/nexus/content/repositories/releases/"
        }
        flatDir {
            dirs project(':react-native-aliyun-push').file('libs')
        }
        // 添加結(jié)束
    }
}

  1. 在settings.gradle中添加以下代碼:
include ':react-native-aliyun-push'
project(':react-native-aliyun-push').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-aliyun-push/android')

  1. 在app/build.gradle中添加以下代碼:
dependencies {
    //下面是被添加的代碼
    compile project(':react-native-aliyun-push')
    //添加結(jié)束
}

4.在AndroidManifest.xml文件中的 application 標(biāo)簽下添加以下代碼:

<meta-data android:name="com.alibaba.app.appkey" android:value="********"/> <!-- 你自己的阿里云- appKey -->
<meta-data android:name="com.alibaba.app.appsecret" android:value="********"/> <!-- 你自己的阿里云-appSecret -->
  1. 在MainApplication.java中被添加以下代碼
// 下面是被添加的代碼
import org.wonday.aliyun.push.AliyunPushPackage;(link 以后一般是已經(jīng)有的了)
import com.alibaba.sdk.android.push.CloudPushService;
import com.alibaba.sdk.android.push.CommonCallback;
import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory;
import com.alibaba.sdk.android.push.register.HuaWeiRegister;
import com.alibaba.sdk.android.push.register.MiPushRegister;
// 添加結(jié)束
...
    @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
          new MainReactPackage(),
            //下面是被添加的代碼
            new AliyunPushPackage()  (link 以后一般是已經(jīng)有的了)
            //添加結(jié)束
      );
    }
  };

  @Override
  public void onCreate() {
    super.onCreate();
    SoLoader.init(this, /* native exopackage */ false);

    //下面是添加的代碼
    this.initCloudChannel();
    //添加結(jié)束
  }

  // 下面是添加的代碼
  /**
   * 初始化阿里云推送通道
   * @param applicationContext
   */
  private void initCloudChannel() {
    PushServiceFactory.init(this.getApplicationContext());
    CloudPushService pushService = PushServiceFactory.getCloudPushService();
    pushService.setNotificationSmallIcon(R.mipmap.ic_launcher_s);//設(shè)置通知欄小圖標(biāo)妄讯, 需要自行添加
    pushService.register(this.getApplicationContext(), "你自己的阿里云appKey", "你自己的阿里云appSecret", new CommonCallback() {
      @Override
      public void onSuccess(String responnse) {
        // success
      }
      @Override
      public void onFailed(String code, String message) {
        // failed
      }
    });

    // 注冊(cè)方法會(huì)自動(dòng)判斷是否支持小米系統(tǒng)推送,如不支持會(huì)跳過(guò)注冊(cè)伏社。
    MiPushRegister.register(this.getApplicationContext(), "小米AppID", "小米AppKey");
    // 注冊(cè)方法會(huì)自動(dòng)判斷是否支持華為系統(tǒng)推送每辟,如不支持會(huì)跳過(guò)注冊(cè)。
    HuaWeiRegister.register(this.getApplicationContext());
  }
  // 添加結(jié)束

ios配置

  1. 添加node_modules/react-native-aliyun-push/ios/RCTAliyunPush.xcodeproj到xcode項(xiàng)目工程

  2. 添加阿里云移動(dòng)推送SDK

拖拽node_modules/react-native-aliyun-push/ios/libs下列目錄到xcode工程的frameworks目錄下包斑,將copy items if needed打勾流礁。 注意:從阿里云下載的SDK中UTDID.framework有問(wèn)題,編譯會(huì)報(bào)錯(cuò)罗丰,請(qǐng)使用react-native-aliyun-push中內(nèi)置的版本神帅。

請(qǐng)自行下載:https://gitee.com/cuic1/react-native-aliyun-push-master

  • AlicloudUtils.framework
  • CloudPushSDK.framework
  • UTDID.framework
  • UTMini.framework
  1. 點(diǎn)擊項(xiàng)目根節(jié)點(diǎn),在targets app的BuildPhase的Link Binary With Libraries中添加公共包依賴
  • libz.tbd
  • libresolv.tbd
  • libsqlite3.tbd
  • CoreTelephony.framework
  • SystemConfiguration.framework
  • UserNotifications.framework

同時(shí)確保targets app的BuildPhase的Link Binary With Libraries包含

  • AlicloudUtils.framework
  • CloudPushSDK.framework
  • UTDID.framework
  • UTMini.framework
  1. 修改AppDelegate.m添加如下代碼
#import "AliyunPushManager.h"

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

...

  // 下面是添加的代碼
  [[AliyunPushManager sharedInstance] setParams:@"阿里云appKey"
                                      appSecret:@"阿里云appSecret"
                                   lauchOptions:launchOptions
              createNotificationCategoryHandler:^{
                //create customize notification category here
  }];
  // 添加結(jié)束

  return YES;
}

// 下面是添加的代碼

// APNs注冊(cè)成功回調(diào)萌抵,將返回的deviceToken上傳到CloudPush服務(wù)器
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
  [[AliyunPushManager sharedInstance] application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}

// APNs注冊(cè)失敗回調(diào)
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
  [[AliyunPushManager sharedInstance] application:application didFailToRegisterForRemoteNotificationsWithError:error];
}

// 打開/刪除通知回調(diào)
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler
{
  [[AliyunPushManager sharedInstance] application:application didReceiveRemoteNotification:userInfo fetchCompletionHandler:completionHandler];
}

// 請(qǐng)求注冊(cè)設(shè)定后找御,回調(diào)
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
{
  [[AliyunPushManager sharedInstance] application:application didRegisterUserNotificationSettings:notificationSettings];
}
// 添加結(jié)束
@end

使用示例

引入模塊

import AliyunPush from 'react-native-aliyun-push';

監(jiān)聽推送事件

componentDidMount() {
    //監(jiān)聽推送事件
    AliyunPush.addListener(this.handleAliyunPushMessage);
}

componentWillUnmount() {
    //
    AliyunPush.removeListener(this.handleAliyunPushMessage);
}

handleAliyunPushMessage = (e) => {
    console.log("Message Received. " + JSON.stringify(e));

    //e結(jié)構(gòu)說(shuō)明:
    //e.type: "notification":通知 或者 "message":消息
    //e.title: 推送通知/消息標(biāo)題
    //e.body: 推送通知/消息具體內(nèi)容
    //e.actionIdentifier: "opened":用戶點(diǎn)擊了通知, "removed"用戶刪除了通知, 其他非空值:用戶點(diǎn)擊了自定義action(僅限ios)
    //e.extras: 用戶附加的{key:value}的對(duì)象

};

寫完以后親測(cè)是沒(méi)有問(wèn)題的,所以小伙伴們出錯(cuò)過(guò)的绍填,多配置幾次??
覺得有用的小伙伴點(diǎn)個(gè)關(guān)注和小紅心就行??霎桅,么么噠。

友情提示:在開發(fā)中有遇到RN相關(guān)的技術(shù)問(wèn)題讨永,歡迎小伙伴加入交流群(620792950)滔驶,在群里提問(wèn)、互相交流學(xué)習(xí)卿闹。交流群也定期更新最新的RN學(xué)習(xí)資料給大家揭糕,謝謝大家支持萝快!
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市著角,隨后出現(xiàn)的幾起案子揪漩,更是在濱河造成了極大的恐慌,老刑警劉巖雇寇,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氢拥,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡锨侯,警方通過(guò)查閱死者的電腦和手機(jī)嫩海,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)囚痴,“玉大人叁怪,你說(shuō)我怎么就攤上這事∩罟觯” “怎么了奕谭?”我有些...
    開封第一講書人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)痴荐。 經(jīng)常有香客問(wèn)我血柳,道長(zhǎng),這世上最難降的妖魔是什么生兆? 我笑而不...
    開封第一講書人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任难捌,我火速辦了婚禮,結(jié)果婚禮上鸦难,老公的妹妹穿的比我還像新娘根吁。我一直安慰自己,他們只是感情好合蔽,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開白布击敌。 她就那樣靜靜地躺著,像睡著了一般拴事。 火紅的嫁衣襯著肌膚如雪沃斤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,441評(píng)論 1 310
  • 那天挤聘,我揣著相機(jī)與錄音轰枝,去河邊找鬼。 笑死组去,一個(gè)胖子當(dāng)著我的面吹牛鞍陨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼诚撵,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼缭裆!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起寿烟,我...
    開封第一講書人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤澈驼,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后筛武,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缝其,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年徘六,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了内边。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡待锈,死狀恐怖漠其,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情竿音,我是刑警寧澤和屎,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站春瞬,受9級(jí)特大地震影響柴信,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜宽气,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一颠印、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧抹竹,春花似錦、人聲如沸止潮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)喇闸。三九已至袄琳,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間燃乍,已是汗流浹背唆樊。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刻蟹,地道東北人逗旁。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親片效。 傳聞我的和親對(duì)象是個(gè)殘疾皇子红伦,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容