海南电网服务方案92.docx

上传人:b****6 文档编号:9231144 上传时间:2023-02-03 格式:DOCX 页数:17 大小:163.44KB
下载 相关 举报
海南电网服务方案92.docx_第1页
第1页 / 共17页
海南电网服务方案92.docx_第2页
第2页 / 共17页
海南电网服务方案92.docx_第3页
第3页 / 共17页
海南电网服务方案92.docx_第4页
第4页 / 共17页
海南电网服务方案92.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

海南电网服务方案92.docx

《海南电网服务方案92.docx》由会员分享,可在线阅读,更多相关《海南电网服务方案92.docx(17页珍藏版)》请在冰豆网上搜索。

海南电网服务方案92.docx

海南电网服务方案92

海南电网基于安卓/IOS的消息推送平台服务方案

一、技术方案需求:

系统逻辑组网图

Android客户端集成

主要功能

∙保持与服务器的长连接,以便消息能够即时推送到达客户端

∙接收通知与自定义消息,并向开发者App传递相关信息

Android消息推送消息消息流程:

1.海南电网通过web或者调用API将推送通知发送到JPushServer。

2.JPushServer对消息进行存储,调度等一些列处理。

3.JPushServer将通知发送到海南电网接入服务器。

4.海南电网接入服务器将通知发送到集成了JPushSDK的终端应用。

主要特点

∙客户端维持连接占用资源少、耗电低

∙SDK丰富的接口,可定制通知栏提示样式

∙服务器大容量、稳定

集成压缩包内容

∙AndoridManifest.xml 

o客户端嵌入SDK参考的配置文件

∙libs/jpush-sdk-release1.x.y.jar 

oSDKJava开发包

∙libs/armeabi/libsys1.x.y.so 

oSDKnative开发包

∙example

o是一个完整的Android项目,通过这个演示了JPushSDK的基本用法,可以用来做参考。

AndroidSDK版本

目前SDK只支持Android2.1或以上版本的手机系统。

SDK集成步骤

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

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

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

∙复制 libs/armeabi/libsys1.x.y.so到工程libs/armeabi目录下

∙如果您的项目有libs/armeabi-v7a这个目录,请把libsys1.x.y.so也复制一份到这个目录。

2、配置AndroidManifest.xml

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

主要步骤为:

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

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

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

xmlversion="1.0"encoding="utf-8"?

>

android="

package="YourPackage"

android:

versionCode="100"

android:

versionName="1.0.0"

>

--Required-->

name="YourPackage.permission.JPUSH_MESSAGE"android:

protectionLevel="signature"/>

--Required-->

name="YouPackage.permission.JPUSH_MESSAGE"/>

name="android.permission.RECEIVE_USER_PRESENT"/>

name="android.permission.INTERNET"/>

name="android.permission.WAKE_LOCK"/>

name="android.permission.READ_PHONE_STATE"/>

name="android.permission.WRITE_EXTERNAL_STORAGE"/>

name="android.permission.READ_EXTERNAL_STORAGE"/>

name="android.permission.VIBRATE"/>

name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>

name="android.permission.ACCESS_NETWORK_STATE"/>

--Optional.Requiredforlocationfeature-->

name="android.permission.ACCESS_COARSE_LOCATION"/>

name="android.permission.ACCESS_COARSE_UPDATES"/>

name="android.permission.ACCESS_WIFI_STATE"/>

name="android.permission.CHANGE_WIFI_STATE"/>

name="android.permission.ACCESS_FINE_LOCATION"/>

name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>

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;  

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 机械仪表

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1