name="android.permission.CHANGE_NETWORK_STATE"/>
android:
icon="@drawable/ic_launcher"
android:
label="@string/app_name"
android:
name="YourApplication">
--Required-->
android:
name="cn.jpush.android.service.PushService"
android:
enabled="true"
android:
exported="false">
name="cn.jpush.android.intent.REGISTER"/>
name="cn.jpush.android.intent.REPORT"/>
name="cn.jpush.android.intent.PushService"/>
name="cn.jpush.android.intent.PUSH_TIME"/>
--Required-->
android:
name="cn.jpush.android.service.PushReceiver"
android:
enabled="true">
priority="1000">
--since1.3.5-->
name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY"/>
--since1.3.5-->
name="YourPackage"/>
--since1.3.5-->
--since1.3.5-->
name="android.intent.action.USER_PRESENT"/>
name=".conn.CONNECTIVITY_CHANGE"/>
name="android.intent.action.PACKAGE_ADDED"/>
name="android.intent.action.PACKAGE_REMOVED"/>
scheme="package"/>
--RequiredSDK核心功能-->
android:
name="cn.jpush.android.ui.PushActivity"
android:
theme="@android:
style/Theme.Translucent.NoTitleBar"
android:
configChanges="orientation|keyboardHidden">
name="cn.jpush.android.ui.PushActivity"/>
name="android.intent.category.DEFAULT"/>
name="YourPackage"/>
--RequiredSDK核心功能-->
android:
name="cn.jpush.android.service.DownloadService"
android:
enabled="true"
android:
exported="false">
--RequiredSDK核心功能-->
name="cn.jpush.android.service.AlarmReceiver"/>
--Required.Forpublishchannelfeature-->
--JPUSH_CHANNEL是为了方便开发者统计APK分发渠道。
-->
--例如:
-->
--发到GooglePlay的APK可以设置为google-play;-->
--发到其他市场的APK可以设置为xxx-market。
-->
--目前这个渠道统计功能的报表还未开放。
-->
name="JPUSH_CHANNEL"android:
value="developer-default"/>
--Required.AppKeycopiedfromPortal-->
name="JPUSH_APPKEY"android:
value="YourAppKey"/>
3、添加代码
JPushSDK提供的API接口,都主要集中在 cn.jpush.android.api.JPushInterface类里。
基础API
∙init初始化SDK
publicstaticvoidinit(Contextcontext)
∙setDebugMode设置调试模式
//Youcanenabledebugmodeindevelopingstate.Youshouldclosedebugmodewhenrelease.
publicstaticvoidsetDebugMode(booleandebugEnalbed)
调用示例代码(参考example项目)
∙init只需要在应用程序启动时调用一次该API即可。
∙以下代码定制一个本应用程序Application类。
需要在AndoridManifest.xml里配置。
请参考上面AndroidManifest.xml片断,或者example项目。
publicclassExampleApplicationextendsApplication{
@Override
publicvoidonCreate(){
super.onCreate();
JPushInterface.setDebugMode(true);
JPushInterface.init(this);
}
}
4、测试确认
1.确认所需的权限都已经添加。
如果必须的权限未添加,日志会提示错误。
2.确认AppKey(在Portal上生成的)已经正确的写入Androidmanifest.xml。
3.确认在程序启动时候调用了init(context)接口
4.确认测试手机(或者模拟器)已成功连入网络
o客户端调用init后不久,如果一切正常,应有登录成功的日志信息
5.启动应用程序,在Portal上向应用程序发送自定义消息或者通知栏提示。
o在几秒内,客户端应可收到下发的通知或者正定义消息
如果SDK工作正常,则日志信息会如下图所示:
如图所示,客户端启动分为4步:
1.检查metadata的appKey和channel,如果不存在,则启动失败
2.初始化JPushSDK,检查JNI等库文件的有效性,如果库文件无效,则启动失败
3.检查Androidmanifest.xml,如果有Required的权限不存在,则启动失败
4.连接服务器登录,如果存在网络问题,则登陆失败,或者前面三步有问题,不会启动JPushSDK
iOS客户端集成
主要功能
∙为JPushServer上报DeviceToken,免除开发者管理DeviceToken的麻烦
∙应用运行时,应用内JPush长连接可以持续地收到推送消息
iOS消息推送消息消息流程:
1.海南电网通过web或者调用API将推送通知发送到JPushServer。
2.JPushServer对消息进行调度,然后根据用户平台注册信息发送到苹果APNS服务器。
3.APNS服务器将通知最终发送到集成了JPushSDK的iOS应用终端。
4.JPushserver同样提供了应用内消息的接收,由于iOS平台的特性APNS可以在应用关闭时收到通知,但应用内消息需要应用开启后才可以收到
主要特点
∙集成简单
∙iOSSDK集成后,服务器端向iOS设备推送简单方便
版本
∙当前提供的SDK使用OpenUDID的方案来确定设备的编号,符合AppStore的上架规定。
集成压缩包内容
包名为JPush-iOS-SDK-[版本号]
∙lib文件夹:
包含头文件APService.h,静态库文件libPushSDK.a 和libPushSDK-Simulator.a,支持的iOS版本为4.3~6.1。
(请注意:
模拟器不能实现APNS,提供libPushSDK-Simulator.a,只是为了避免SDK在模拟器环境下报错,方便开发者使用模拟器调试自己的功能)
∙pdf文件:
开发指南
∙demo文件夹:
示例
开发环境
∙建议使用XCode4.5 或以上版本
iOSSDK集成步骤
1、在JPushPortal上创建应用
∙在JPush的管理Portal上上传证书并创建应用。
如果对APNs证书不太了解请参考iOS证书设置指南
∙创建成功后自动生成AppKey 用以标识该应用。
2、导入API开发包到应用程序项目
∙将SDK包解压,在XCode中选择“Addfilesto'Yourprojectname'...”,将解压后的lib子文件夹(包含APService.h、libPushSDK.a和libPushSDK-Simulator.a文件,如果不需要在模拟器中调试,可以丢弃libPushSDK-Simulator.a文件)添加到你的工程目录中。
3、必要的框架
∙CFNetwork.framework
∙CoreFoundation.framework
∙CoreTelephony.framework
∙SystemConfiguration.framework
∙CoreGraphics.framework
∙Foundation.framework
∙UIKit.framework
4、BuildSettings
∙设置SearchPaths下的UserHeaderSearchPaths和LibrarySearchPaths,比如SDK文件夹(默认为lib)与工程文件在同一级目录下,则都设置为"$(SRCROOT)/[文件夹名称]"即可。
5、创建并配置PushConfig.plist文件
在你的工程中创建一个新的PropertyList文件,并将其命名为PushConfig.plist,填入Portal为你的应用提供的APP_KEY等参数。
{
"APS_FOR_PRODUCTION="0";
"CHANNEL"="Publishchannel";
"APP_KEY"="AppKeycopiedfromJPushPortalapplication";
}
∙CHANNEL
o指明应用=E7__序包的下载渠道,为方便分渠道统计。
根据你的需求自行定义即可。
∙APP_KEY
o在管理Portal上创建应用时自动生成的(AppKey)用以标识该应用。
请确保应用内配置的AppKey与第1步在Portal上创建应用时生成的AppKey一致,AppKey可以在应用详情中查询。
∙APS_FOR_PRODUCTION
o1.3.1版本新增,表示应用是否采用生产证书发布(Ad_Hoc或APPStore),0(默认值)表示采用的是开发者证书,1表示采用生产证书发布应用。
请注意此处配置与WebPortal应用环境设置匹配。
∙在1.2.2或之前版本的配置文件中,有TEST_MODE这个键,新版的SDK不再使用,可以将它删除。
5、添加代码
API
APIs主要集中在 APService接口类里。
@interfaceAPService:
NSObject
//initPush
+(void)setupWithOption:
(NSDictionary*)launchingOption;
//registernotificationtype
+(void)registerForRemoteNotificationTypes:
(UIRemoteNotificationType)types;
//uploaddevicetoken
+(void)registerDeviceToken:
(NSData*)deviceToken;
//handlenotificationrecieved
+(void)handleRemoteNotification:
(NSDictionary*)remoteInfo;
@end
调用代码
监听系统事件,相应地调用JPushSDK提供的API来实现功能。
以下3个事件监听与调用JPushSDKAPI都是必须的。
请直接复制如下代码块里,注释为"Required"的行,到你的应用程序代理类里相应的监听方法里。
-(BOOL)application:
(UIApplication*)applicationdidFinishLaunchingWithOptions:
(NSDictionary*)launchOptions
{
self.window=[[[UIWindowalloc]initWithFrame:
[[UIScreenmainScreen]bounds]]autorelease];
self.window.backgroundColor=[UIColorwhiteColor];
[self.windowmakeKeyAndVisible];
//Required
[APServiceregisterForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge|
UIRemoteNotificationTypeSound|
UIRemoteNotificationTypeAlert)];
//Required
[APServicesetupWithOption:
launchOptions];
returnYES;
}
-(void)application:
(UIApplication*)applicationdidRegisterForRemoteNotificationsWithDeviceToken:
(NSData*)deviceToken{
//Required
[APServiceregisterDeviceToken:
deviceToken];
}
-(void)application:
(UIApplication*)applicationdidReceiveRemoteNotification:
(NSDictionary*)userInfo{
//Required
[APServicehandleRemoteNotification:
userInfo];
}
监听通知
API里面提供了下面5种类型的通知:
externNSString*constkAPNetworkDidSetupNotification;