落叶随风将要去何方

React Native 使用gcm push notifications

 

 近来公司项目需要用到gcm推送,话不多说,国内要使用gcm推送必须具备如下条件

  1、设备支持谷歌服务

  2、设备需科学上网

React Native 使用gcm推送有一个比较好的多平台推送服务OneSignal ,个人感觉很适合RN,

以下内容将介绍如何使用OneSignal来进行推送。

1、首先进入OneSignal 控制台,进入后点击Add  a new app,如果不是登录状态会提示你登录,

我使用的是Google账号登录。登录后Add a new app如下:

2、接下来是选择推送平台,我选择的是GCM

3、接下来是配置推送平台,这个地方需要配置Google Server API Key 和Google Project Number,

如何生成Google Server API Key呢?点开Generate a Google  server API Key下方的Read the documentation

4、进入后我们看到它要我们进入Firebase Console 

5、进入后点击"免费开始使用"

 6、在新跳转的页面点击“CREATE NEW PROJECT”

7、创建Firebase 工程

为了和之前在OneSignal控制台中添加的app名称SignalTestFourth对应,我创建了一个名为OneSignalFourth的工程,点击CREATE PROJECT。

8、获取Google  server API Key和Google Project Number

Firebase 工程创建完成之后,它会给我们分配Server key  和 Sender ID,那么怎么找到呢?

如图所示,点击完Project settings 后再选择CLOUD MESSAGING ,这样就可以看到我们的Server key  和 Sender ID

这里的Server key就是我们之前第3步在OneSignal 控制台配置GCM需要的Google  server API Key,

 Sender ID就是Google Project Number,把这些粘贴过去就行啦

 粘贴后点击"save",这样我们的SignalTestFourth就和具有gcm服务的一个名为OneSignalFourth的FireBase工程紧紧联系在了一起

 

 然后选择使用React Native SDK

 点击next 之后提示我们安装SDK,并且给了我们一个超链接,这是干嘛用的呢?其实就是让我们的React Native 应用使用官方的

第三方组件react-native-onesignal,到这一步,OneSignal控制台的操作就告一段落,接下来就要转移战场,看看如何使用react-native-onesignal,

这里Done发现不能点击,不过没有关系,大胆的直接关闭此窗口就行了。

 

集成官方组件react-native-onesignal

这个链接里有RN集成react-native-onesignal的具体说明,具体步骤我就不再赘述,我只在此处列出一些本人觉得需要注意的地方

1、配置android/gradle/wrapper/gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https://services.gradle.org/distributions/gradle-2.10-all.zip

要注意distributionUrl=https://services.gradle.org/distributions/gradle-2.10-all.zip必须是2.10版本

2、配置android/build.gradle

dependencies {
    classpath 'com.android.tools.build:gradle:2.1.0' // Upgrade gradle

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
}

要注意classpath 'com.android.tools.build:gradle:2.1.0'必须是2.1.0版本

3、配置android/app/build.gradle

android {
    ...
    buildToolsVersion "23.0.2" // NOT REQUIRED BUT RECOMMENDED - This is good for in-process dex (faster)
    ...
    defaultConfig {
        ...
        manifestPlaceholders = [manifestApplicationId: "${applicationId}",
                                onesignal_app_id: "YOUR_ONESIGNAL_ID",
                                onesignal_google_project_number: "YOUR_GOOGLE_PROJECT_NUMBER"]
    }
}

dependencies {
    ...

    compile project(':react-native-onesignal')
}

注意这里的onesignal_app_id和onesignal_google_project_number,我估计有人不知道

进入OneSignal控制台,按照如下步骤就可找到onesignal_app_id,

 

而onesignal_google_project_number就是之前提到过的senderID,进入FireBase控制台就可找到,如图

 

需要注意的地方就这些。

集成成功

 当你的RN 应用集成react-native-onesignal成功之后,安装到设备当中,OneSignal控制台就可以看到OneSignal使用状态,

如图我这里有6台设备安装了此应用,注意只有在Subscribed栏目为yes的情况下,推送才可以成功。

另外在这里提供一些Subscribed为no的情况下的解决方法

1、当为No Push Token时,这里的意思是没有拿到注册ID,因为注册ID是谷歌服务返回过来的,所以检查一下设备是否科学上网

2、当为Outdated Google Play Services App ,这里的意思是谷歌服务过时了,为什么会出现这种情况?因为这有个要素是

“设备上的谷歌服务版本必须要和应用的谷歌服务版本相同或者更高”,所以需要设备升级Google play Service 包,所以科学上网去google官网下载吧 

 

就简单介绍到这里

posted @ 2016-12-23 13:57  木子飞2  阅读(1399)  评论(0编辑  收藏  举报

只留给天空美丽一场