Android45_JPush极光推送及ShareSDK

来源:互联网 发布:linux rpm安装java 编辑:程序博客网 时间:2024/06/05 11:51
JPush极光推送及ShareSDK

一、JPush:
(一)、Android实现推送方式解决方案:
1、推送方式基础知识:

   在移动互联网时代以前的手机,如果有事情发生需要通知用户,则会有一个窗口弹出,将告诉用户正在发生什么事情。可能是未接电话的提示,日历的提醒,或是一封新的彩信。推送功能最早是被用于Email中,用来提示我们新的信息。由于时代的发展和移动互联网的热潮,推送功能更加地普及,已经不再仅仅用在推送邮件了,更多地用在APP中了。

  当我们开发需要和服务器交互的应用程序时,基本上都需要获取服务器端的数据,比如《地震应急通》就需要及时获取服务器上最新的地震信息。要获取服务器上不定时更新的信息,一般来说有两种方法:第一种是客户端使用Pull(拉)的方式,就是隔一段时间就去服务器上获取一下信息,看是否有更新的信息出现。第二种就是 服务器使用Push(推送)的方式,当服务器端有新信息了,则把最新的信息Push到客户端上。这样,客户端就能自动的接收到消息。

  虽然Pull和Push两种方式都能实现获取服务器端更新信息的功能,但是明显来说Push方式比Pull方式更优越。因为Pull方式更费客户端的网络流量,更主要的是费电量,还需要我们的程序不停地去监测服务端的变化

  在开发Android应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息。我们只需要在Android通知栏处向下一拉,就展开了Notification 面板,可以集中一览各种各样通知消息。


2、几种常见的解决方案实现原理:
        手机推送服务的原理很简单,就是通过建立一条手机与服务器的连接链路,当有消息需要发送到手机时,通过此链路发送即可。

  1)轮询(Pull)方式:应用程序阶段性的与服务器进行连接,并查询是否有新的消息到达。必须自己实现与服务器之间的通信,例如消息排队等。而且还要考虑轮询的频率,如果太慢可能导致某些消息的延迟,如果太快,则会大量消耗网络带宽和电池。

  2)SMS(Push)方式:在Android平台上,可以通过拦截SMS消息并且解析消息内容来了解服务器的意图,并获取其中的内容进行处理。这是一个不错的想法,这个方案的好处是,可以实现完全的实时操作。但是问题是这个方案的成本相对比较高,需要向移动公司缴纳相应的费用。目前很难找到免费的短消息发送网关来实现这种方案。

  3)持久连接(Push)方式:这个方案可以解决由轮询带来的性能问题,但是还是会消耗手机的电池。
  Android操作系统允许在低内存情况下杀死系统服务,所以我们的推送通知服务很有可能就被操作系统Kill掉了。 轮询(Pull)方式和SMS(Push)方式这两个方案也存在明显的不足。至于持久连接(Push)方案也有不足,不过我们可以通过良好的设计来弥补,以便于让该方案可以有效的工作。


3、 推荐解决方案:XMPP协议实现Android推送功能。
       XMPP:  Extensible Messageing and Presence Protocol  【可扩展通讯和表示协议
        XMPP是目前主流的四种IM(IM:instant messaging,即时消息)协议之一,其他三种分别为:即时信息和空间协议(IMPP)、空间和即时信息协议(PRIM)、针对即时通讯和空间平衡扩充的进程开始协议SIP(SIMPLE)。

  因为目前它是开源的,对于其简单的推送功能它还是能够实现的。
  事实上Google官方的C2DM服务器底层也是采用XMPP协议进行的封装。XMPP(可扩展通讯和表示协议)是基于可扩展标记语言(XML)的协议,它用于即时消息(IM)以及在线探测。这个协议可能最终允许因特网用户向因特网上的其他任何人发送即时消息。

  Androidpn是一个基于XMPP协议的java开源Android push notification实现。它包含了完整的客户端和服务器端。经过源代码研究发现,该服务器端基本是在另外一个开源工程openfire基础上修改实现的。


4、主流解决方案:使用第三方平台:极光推送
     极光推送,英文简称 JPush,是一个面向普通开发者开放的,免费的第三方消息推送服务。 开发者只需在客户端集成极光推送 SDK,即可轻松地添加 Push功能到他的 App中。


(二)、极光推送服务具有如下的优势:
1)完全开放注册,免费向所有的开发者开放使用
2)SDK流量电量消耗很少
3)集成简单,很快就能够集成跑起来
4)服务器端推送并发量支持大、延迟小


(三)、操作步骤:
•第一步:创建极光推送开发者帐号
•第二步:Portal上创建应用
•第三步:下载应用Example
•第四步:把Example(Android项目)导入 Eclipse 里
•第五步:运行 Example 这个应用
•第六步:Portal上推送通知
•第七步:手机上收到通知
•第八步:Portal上推送消息
•第九步:在LogCat中查看收到的消息




二、ShareSDK:

(一)、概述:
        ShareSDK是一种社会化分享组件,为iOS、Android、WP8 的APP提供社会化功能,集成了一些常用的类库和接口,缩短开发者的开发时间,还有社会化统计分析管理后台。ShareSDK移动开发者服务平台由广州掌淘网络科技有限公司开发。 支持包括QQ、微信、新浪微博、腾讯微博、开心网、人人网、豆瓣、网易微博、搜狐微博、facebook、twitter、google+等国内外40多家的主流社交平台,帮助开发者轻松实现社会化分享、登录、关注、获得用户资料、获取好友列表等主流的社会化功能,强大的统计分析管理后台,可以实时了解用户、信息流、回流率、传播效率等数据,有效地指导移动APP的日常运营与推广,同时为APP引入更多的社会化流量。 


 (二)、使用步骤:
1、第一步:下载ShareSDK

2、第二步:集成ShareSDK

        进入ShareSDK解压目录,打开“Share SDK for Android”目录,可以找到“QuickIntegrater.jar”,这个就是快速集成ShareSDK的工具。双击QuickIntegrater启动程序


3、第三步:配置AndroidManifest.xml

    A、添加权限
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_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.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>

    B、添加activity信息 

<activity
  android:name="cn.sharesdk.framework.ShareSDKUIShell"
  android:theme="@android:style/Theme.Translucent.NoTitleBar"
  android:configChanges="keyboardHidden|orientation|screenSize"
  android:screenOrientation="portrait"
  android:windowSoftInputMode="stateHidden|adjustResize" >
   <intent-filter>
        <data android:scheme="tencent100371282" />
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.BROWSABLE" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>


    C、如果集成了微信或者易信,还需要添加下面两个Activity

 <!--微信分享回调 -->

<activity
  android:name=".wxapi.WXEntryActivity"
  android:theme="@android:style/Theme.Translucent.NoTitleBar"
  android:configChanges="keyboardHidden|orientation|screenSize"
  android:exported="true"
  android:screenOrientation="portrait" />

<!--易信分享回调 -->
<activity
  android:name=".yxapi.YXEntryActivity"
  android:theme="@android:style/Theme.Translucent.NoTitleBar"
  android:configChanges="keyboardHidden|orientation|screenSize"
  android:exported="true"
  android:screenOrientation="portrait" />

4、第四步:添加分享代码

         调用此方法,即可打开一键分享功能进行分享。

private void showShare() {

ShareSDK.initSDK(this);

OnekeyShare oks = new OnekeyShare();

// 关闭sso授权

oks.disableSSOWhenAuthorize();


// 分享时Notification的图标和文字

oks.setNotification(R.drawable.ic_launcher,

getString(R.string.app_name));

// title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用

oks.setTitle(getString(R.string.share));

// titleUrl是标题的网络链接,仅在人人网和QQ空间使用

oks.setTitleUrl("http://sharesdk.cn");

// text是分享文本,所有平台都需要这个字段

oks.setText("测试:使用ShareSDK进行信息分享。【Steven】");

// imagePath是图片的本地路径,Linked-In以外的平台都支持此参数

oks.setImagePath("/mnt/sdcard/Download/mypic.gif");

// url仅在微信(包括好友和朋友圈)中使用

oks.setUrl("http://sharesdk.cn");

// comment是我对这条分享的评论,仅在人人网和QQ空间使用

oks.setComment("我是测试评论文本");

// site是分享此内容的网站名称,仅在QQ空间使用

oks.setSite(getString(R.string.app_name));

// siteUrl是分享此内容的网站地址,仅在QQ空间使用

oks.setSiteUrl("http://sharesdk.cn");


// 启动分享GUI

oks.show(this);

}





0 0