消息推送_个推

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


这里写图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值