此文章已于 14:17:10 2015/3/24 重新发布到
鲸歌

Jpush推送模块

 

 

或以上版本的手机系统。

SDK集成步骤

、导入 SDK 开发包到你自己的应用程序项目

•    解压缩 jpush-sdk_v1.x.y.zip 集成压缩包

•    复制 libs/jpush-sdk-release1.x.y.jar 到工程 libs/
目录下

•    复制 libs/armeabi/libjpush1xy.so 到工程 libs/armeabi 目录下

    如果您的项目有 libs/armeabi-v7a 这个目录,请把armeabi 的so文件
也复制一份到这个目录。

、配置 AndroidManifest.xml

根据 SDK 压缩包里的 AndroidManifest.xml 样例文件,来配置应用程序项目的 AndroidManifest.xml 。

主要步骤为:

1.    复制备注为
"Jpush Required"
的部分

2.    将备注为替换包名的部分,替换为当前应用程序的包名

3.    将AppKey替换为在Portal上注册该应用的的Key,例如(9fed5bcb7b9b87413678c407)

 

权限配置:

<?xml version="1.0"
encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.orca.jpush"

android:versionCode="100"

android:versionName="1.0.0"

>

 

<!-- Jpush Required
-->

<permission android:name="com.orca.jpush.permission.JPUSH_MESSAGE" android:protectionLevel="signature"
/>

 

<!-- Jpush Required
-->

<uses-permission android:name="com.orca.jpush.permission.JPUSH_MESSAGE"
/>

<uses-permission android:name="android.permission.RECEIVE_USER_PRESENT"
/>

<uses-permission android:name="android.permission.INTERNET"
/>

<uses-permission android:name="android.permission.WAKE_LOCK"
/>

<uses-permission android:name="android.permission.READ_PHONE_STATE"
/>

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
/>

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
/>

<uses-permission android:name="android.permission.VIBRATE"
/>

<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"
/>

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"
/>

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>

<uses-permission android:name="android.permission.WRITE_SETTINGS"
/>
.0 -->

 

<!--
Optional. Jpush Required for location feature -->

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"
/>

<uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES"
/>

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"
/>

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"
/>

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"
/>

<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"
/>

<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"
/>

 

<!--应用包名及appkey替换:
>

<application

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:name="Your Application">

 

<!-- Jpush Required -->

<service

android:name="cn.jpush.android.service.PushService"

android:enabled="true"

android:exported="false"
>

<intent-filter>

<action android:name="cn.jpush.android.intent.REGISTER"
/>

<action android:name="cn.jpush.android.intent.REPORT"
/>

<action android:name="cn.jpush.android.intent.PushService"
/>

<action android:name="cn.jpush.android.intent.PUSH_TIME"
/>

</intent-filter>

</service>

 

<!-- Jpush Required -->

<receiver

android:name="cn.jpush.android.service.PushReceiver"

android:enabled="true"
>

<intent-filter android:priority="1000">
<!--since 1.3.5 -->

<action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY"
/>
<!--since 1.3.5 -->

<category android:name="com.orca.jpush"
/>
<!--since 1.3.5 -->

</intent-filter>
<!--since 1.3.5 -->

<intent-filter>

<action android:name="android.intent.action.USER_PRESENT"
/>

<action android:name="android.net.conn.CONNECTIVITY_CHANGE"
/>

</intent-filter>

<intent-filter>

<action android:name="android.intent.action.PACKAGE_ADDED"
/>

<action android:name="android.intent.action.PACKAGE_REMOVED"
/>

<data android:scheme="package"
/>

</intent-filter>

</receiver>

<!-- Jpush Required SDK核心功能-->

<activity

android:name="cn.jpush.android.ui.PushActivity"

android:theme="@android:style/Theme.Translucent.NoTitleBar"

android:configChanges="orientation|keyboardHidden"
>

<intent-filter>

<action android:name="cn.jpush.android.ui.PushActivity"
/>

<category android:name="android.intent.category.DEFAULT"
/>

<category android:name="com.orca.jpush"
/>

</intent-filter>

</activity>

<!-- Jpush Required SDK核心功能-->

<service

android:name="cn.jpush.android.service.DownloadService"

android:enabled="true"

android:exported="false"
>

</service>

<!-- Jpush Required SDK核心功能-->

<receiver android:name="cn.jpush.android.service.AlarmReceiver"
/>

 

<!-- Jpush Required. For publish channel feature -->

<!-- JPUSH_CHANNEL 是为了方便开发者统计APK分发渠道。-->

<!--
例如:
-->

<!--
发到 Google Play 的APK可以设置为 google-play;
-->

<!--
发到其他市场的 APK 可以设置为 xxx-market。
-->

<!--
目前这个渠道统计功能的报表还未开放。-->

<meta-data android:name="JPUSH_CHANNEL" android:value="developer-default"/>

<!-- Jpush Required. AppKey copied from Portal -->

<meta-data android:name="JPUSH_APPKEY" android:value="14177cf8b6389078bafb6b33"/>

</application>

</manifest>

 

、必须权限说明

权限    用途

You Package.permission.JPUSH_MESSAGE    官方定义的权限,允许应用接收JPUSH内部代码发送的广播消息。

RECEIVE_USER_PRESENT    允许应用可以接收点亮屏幕或解锁广播。

INTERNET    允许应用可以访问网络。

WAKE_LOCK    允许应用在手机屏幕关闭后后台进程仍然运行

READ_PHONE_STATE    允许应用访问手机状态。

WRITE_EXTERNAL_STORAGE    允许应用写入外部存储。

READ_EXTERNAL_STORAGE    允许应用读取外部存储。

WRITE_SETTINGS    允许应用读写系统设置项。

VIBRATE    允许应用震动。

MOUNT_UNMOUNT_FILESYSTEMS    允许应用挂载/卸载
外部文件系统。

ACCESS_NETWORK_STATE    允许应用获取网络信息状态,如当前的网络连接是否有效。

SYSTEM_ALERT_WINDOW    允许应用显示系统窗口,位于显示的顶层。

 

、添加代码

JPush SDK 提供的 API 接口,都主要集中在 cn.jpush.android.api.JPushInterface 类里。

基础 API

•    init 初始化SDK

?

public
static
void init(Context context)

•    setDebugMode 设置调试模式

?

// You can enable debug mode in developing state. You should close debug mode when release.

public
static
void setDebugMode(boolean debugEnalbed)

添加统计代码

•    参考文档:
统计分析 API

调用示例代码(参考 example 项目)

•    init 只需要在应用程序启动时调用一次该 API 即可。

•    以下代码定制一个本应用程序 Application 类。需要在 AndoridManifest.xml 里配置。请参考上面 AndroidManifest.xml 片断,或者 example 项目。

?

public
class
ExampleApplication
extends Application {

@Override

public
void onCreate()
{

super.onCreate();

JPushInterface.setDebugMode(true);

JPushInterface.init(this);

}

}

、测试确认

1.    确认所需的权限都已经添加。如果必须的权限未添加,日志会提示错误。

2.    确认 AppKey(在Portal上生成的)已经正确的写入 Androidmanifest.xml 。

3.    确认在程序启动时候调用了init(context)
接口

4.    确认测试手机(或者模拟器)已成功连入网络

•    客户端调用 init 后不久,如果一切正常,应有登录成功的日志信息

5.    启动应用程序,在 Portal 上向应用程序发送自定义消息或者通知栏提示。详情请参考管理Portal。

•    在几秒内,客户端应可收到下发的通知或者正定义消息

如果 SDK 工作正常,则日志信息会如下图所示:

 

如图所示,客户端启动分为 4 步:

1.    检查 metadata 的 appKey 和 channel ,如果不存在,则启动失败

2.    初始化 JPush SDK,检查 JNI 等库文件的有效性,如果库文件无效,则启动失败

3.    检查 Androidmanifest.xml,如果有 Required 的权限不存在,则启动失败

4.    连接服务器登录,如果存在网络问题,则登陆失败,或者前面三步有问题,不会启动JPush SDK

 

Jpush推送模块的更多相关文章

  1. Android高效率编码-第三方SDK详解系列(三)——JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送

    Android高效率编码-第三方SDK详解系列(三)--JPush推送牵扯出来的江湖恩怨,XMPP实现推送,自定义客户端推送 很久没有更新第三方SDK这个系列了,所以更新一下这几天工作中使用到的推送, ...

  2. 为Titanium创建自己的安卓推送模块

    在手机应用中,推送是一个非常重要的功能.相对来说ios应用的推送功能很容易做,因为它统一都是用苹果的APNS服务实现的.但安卓这边就比较混乱了,虽然谷歌也推出了类似苹果的官方推送服务,但由于谷歌的服务 ...

  3. 跨平台移动开发 Android使用JPush推送消息

    二话不说,直接上图,看效果 第一步在官网下载 Android Push SDK https://www.jpush.cn/sdk/android 第二步 创建注册帐号,应用 第三步  下载应用,导入l ...

  4. AndroidStudio 导包遇到so文件的解决方案----------JPush推送

    最近遇到 Couldn't load jpush175 from loader dalvik.system.PathClassLoader 这样一个问题 它说的是AS不能找到库文件 发生在于像Ecli ...

  5. Nchan nginx 支持的开源消息推送模块

    1. 介绍 // 官方说明 Nchan is a scalable, flexible pub/sub server for the modern web, built as a module for ...

  6. jpush推送

    1.下载这个压缩包,vendo文件夹,复制里面的vendo到该文件夹下. 解压 2.修改AppKey和MasterSecret就ok 了

  7. 极光推送 JPush 简介 集成 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  8. java集成jpush实现客户端推送

    代码地址如下:http://www.demodashi.com/demo/13700.html 前言 java 集成jpush 实现客户端推送 一.准备工作 开发环境: jdk1.6 Eclipse ...

  9. 极光推送JPush

    推送ios以及android信息,简单的基于jpush v2带IMEI的推送实现. maven: <dependency> <groupId>cn.jpush.api</ ...

随机推荐

  1. MyEclipse------随机流(能读也能写数据)

    RandomAccessFile流指向文件时,不刷新文件. 其中seek(long a)用来定位RandomAccessFile流的读写位置,其中参数a确定读写位置距离文件开头的字节个数. other ...

  2. iOS多线程介绍

    一.线程概述 有些程序是一条直线,起点到终点:有些程序是一个圆,不断循环,直到将它切断.直线的如简单的Hello World,运行打印完,它的生命周期便结束了,像昙花一现那样:圆如操作系统,一直运行直 ...

  3. sprintf()函数的用法

    sprintf(g_strAppName, "%s",pLast+1); ----------------------------------------------------- ...

  4. gdb调试多进程和多线程命令

     gdb调试多进程和多线程命令 来源:http://blog.csdn.net/pbymw8iwm/article/details/7876797 1. 默认设置下,在调试多进程程序时GDB只会调试主 ...

  5. jQuery 事件用法详解

    jQuery 事件用法详解 目录 简介 实现原理 事件操作 绑定事件 解除事件 触发事件 事件委托 事件操作进阶 阻止默认事件 阻止事件传播 阻止事件向后执行 命名空间 自定义事件 事件队列 jque ...

  6. Linux解压安装与卸载

    linux tar.gz zip 解压缩 压缩命令 linux下安装软件主要有这么几种: 1.自动安装: yum install package 2.用二进制文件安装:rpm -ivh file.rp ...

  7. i3D的一篇Unity教程中的笔记

    原地址:http://blog.sina.com.cn/s/blog_72b936d80100wwej.html 以下是i3D的一篇Unity教程中的笔记. i3D的这篇教程是[i3D.Next-Ge ...

  8. [BZOJ1477]青蛙的约会

    [BZOJ1477]青蛙的约会 试题描述 两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面.它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止.可是它们出发之前忘 ...

  9. arch linux 新版安装(转)

    原文地址:http://blog.sina.com.cn/s/blog_69e5d8400101bqlj.html 正式安装: 以下,是安装的具体步骤,我将做尽可能详细的解说: 一.基本系统的安装 进 ...

  10. C#关键字base

    例子: public CustomStroke(SharpType type) :base() { this.type = type; } 这里的CustomStroke继承与基类Stroke类,用关 ...