目前来说消息推送的第三放框架有很多 比如说
友盟: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的用户推送消息了