消息推送_个推

来源:互联网 发布:沈阳知行科技是培训吗 编辑:程序博客网 时间:2024/05/01 02:14

目前来说消息推送的第三放框架有很多 比如说
友盟:http://www.umeng.com/push
百度云推送:http://push.baidu.com/fc
腾讯信鸽:http://xg.qq.com/xg

今天介绍的是
个推:http://www.getui.com/

开发文档: http://docs.getui.com/mobile/android/overview/


概述

1.运行环境

SDK支持Android 2.2及以上版本的Android系统;手机必须要有网络(GPRS、3G或Wifi网络等);手机可以没有SIM卡,但是可能导致部分功能缺失;手机可以不挂载SD卡,但部分功能可能无法正常工作。

2.主要功能及特点

个推Android SDK可以在后台驻留,维持与推送服务器的长连接,实时接收推送消息。SDK采用独有技术确保推送服务省电省流量运行,不会给应用和手机设备造成影响。集成简单快速,提供7x24技术支持。支持多个APP合并一条长连接,共享链路,省电省流量。SDK接口丰富,可定制推送模式和通知栏提示样式。可以根据用户属性建立不同标签,进行定向推送,也可以进行A/B分组测试,从而进行精细化运营。提供别名接口、静默时间设置接口、推送控制接口,满足APP的各种需求。Android SDK不仅能提供云端到客户端的推送服务,也可以提供从客户端上传至云端的服务,即推送消息链路支持上下行双向通道,开发者与客户端之间互动更便利。

使用步骤:

1.访问 https://dev.getui.com/dos4.0/index.html#login 注册应用

2.下载SDK并解压 里面有三个文件夹

3.将SDK解压后的资源文件中的GetuiExt.jar和GetuiSDK.jar拷贝到项目中的libs,并添加到依赖
Android Studio工程默认已经添加了supportV7的依赖,如果没有,就添加加压后的supportV4的依赖,否则会有异常
armeabi-v7a和x86的so文件,默认SDK中并不包含,需要的话可以单独下载
如果要添加so文件,需要自行在\app\src\main目录中新建文件夹jniLibs,然后把对应的so文件添加进去
这里写图片描述

4.将资源文件中的layout文件拷贝到项目的layout文件夹中

5.如果需要修改通知栏中的提示图标,可以在在res/drawable-hdpi/、res/drawable-mdpi/、res/drawable-ldpi/等各分辨率资源目录下,放置相应尺寸的push.png图片

6.在清单文件中添加权限. 注意如果有需要替换包名的 ,替换包名

**注意::**<!-- 解决Android L上通知显示异常问题, build .gradle 文件中targetSdkVersion需要设置成22 --><uses-sdk    android:minSdkVersion="9"    android:targetSdkVersion="22" /><!-- 个推SDK权限配置开始 --><uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.WAKE_LOCK" /><uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.VIBRATE" /><uses-permission android:name="android.permission.GET_TASKS" /><!-- ibeancon 需要蓝牙权限 --><uses-permission android:name="android.permission.BLUETOOTH"/> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/><!-- 支持个推3.0 电子围栏功能 --><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!-- 浮动通知权限 --><uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/><!-- 自定义权限 --> <uses-permission android:name="getui.permission.GetuiService.你的包名" /><!--替换为第三方应用的包名--><permission    android:name="getui.permission.GetuiService.你的包名"    android:protectionLevel="normal" ></permission><!--替换为第三方应用的包名--><!-- 个推SDK权限配置结束 -->

7.在清单文件中manifest/Application节点添加以下信息.注意替换内容

<!--个推SDK配置开始-->    <!-- 配置的第三方参数属性 -->    <meta-data        android:name="PUSH_APPID"        android:value="你的APPID" /><!--替换为第三方应用的APPID-->    <meta-data        android:name="PUSH_APPKEY"        android:value="你的APPKEY" /><!--替换为第三方应用的APPKEY-->    <meta-data        android:name="PUSH_APPSECRET"        android:value="你的APPSECRET" /><!--替换为第三方应用的APPSECRET-->    <!-- 配置SDK核心服务 -->    <service        android:name="com.igexin.sdk.PushService"        android:exported="true"        android:label="NotificationCenter"        android:process=":pushservice" />    <service        android:name="com.igexin.sdk.PushServiceUser"        android:exported="true"        android:label="NotificationCenterUser" />    <receiver android:name="com.igexin.sdk.PushReceiver" >        <intent-filter>            <action android:name="android.intent.action.BOOT_COMPLETED" />            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />            <action android:name="android.intent.action.USER_PRESENT" />            <action android:name="com.igexin.sdk.action.refreshls" />            <!-- 以下三项为可选的action声明,可大大提高service存活率和消息到达速度 -->            <action android:name="android.intent.action.MEDIA_MOUNTED" />            <action android:name="android.intent.action.ACTION_POWER_CONNECTED" />            <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />        </intent-filter>    </receiver>    <receiver        android:name="com.igexin.sdk.PushManagerReceiver"        android:exported="false" >        <intent-filter>            <action android:name="com.igexin.sdk.action.pushmanager" />        </intent-filter>    </receiver>    <activity        android:name="com.igexin.sdk.PushActivity"        android:excludeFromRecents="true"        android:exported="false"        android:process=":pushservice"        android:taskAffinity="com.igexin.sdk.PushActivityTask"        android:theme="@android:style/Theme.Translucent.NoTitleBar" />    <activity        android:name="com.igexin.sdk.GActivity"        android:excludeFromRecents="true"        android:exported="true"        android:process=":pushservice"        android:taskAffinity="com.igexin.sdk.PushActivityTask"        android:theme="@android:style/Theme.Translucent.NoTitleBar"/>    <service        android:name="com.igexin.download.DownloadService"        android:process=":pushservice" />    <receiver android:name="com.igexin.download.DownloadReceiver" >        <intent-filter>            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />        </intent-filter>    </receiver>    <provider        android:name="com.igexin.download.DownloadProvider"        android:exported="true"        android:authorities="downloads.你的包名"        android:process=":pushservice" /><!--替换为第三方应用的包名-->    <activity          android:name="com.igexin.getuiext.activity.GetuiExtActivity"          android:configChanges="orientation|keyboard|keyboardHidden"         android:excludeFromRecents="true"        android:exported="false"        android:process=":pushservice"          android:taskAffinity="android.task.myServicetask"          android:theme="@android:style/Theme.Translucent.NoTitleBar" />    <receiver        android:name="com.igexin.getuiext.service.PayloadReceiver"        android:exported="false" >        <intent-filter>            <action android:name="com.igexin.sdk.action.7fjUl2Z3LH6xYy7NQK4ni4" />            <action android:name="com.igexin.sdk.action.你的APPID" /><!--替换为第三方应用的APPID-->        </intent-filter>    </receiver>    <service        android:name="com.igexin.getuiext.service.GetuiExtService"        android:process=":pushservice" /><!-- 个推SDK配置结束 -->

代码实现:

8.在Activity中初始化SDK

package com.getui;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import com.igexin.sdk.PushManager;public class MainActivity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //方法必须在Activity或Service类内调用,        //一般情况下,可以在Activity的onCreate()方法中调用        PushManager.getInstance().initialize( this.getApplicationContext() );    }}

9.查看Android Monitor信息,在搜索框中输入“clientid”可以看到“clientid is xxx”,说明初始化SDK成功,获取到了相应的cid信息

这里写图片描述


这里写图片描述

成功之后 就可以通过个推 想所有安装了app的用户推送消息了


这里写图片描述

0 0
原创粉丝点击