目录

扩展原生服务(废弃)

需要使用原生技术,高级功能,新手勿入

扩展服务在现有封装的服务不足以满足我们的要求时,可以通过自定义扩展服务来实现,即为平台扩展开发新的API服务。
扩展服务开发完成之后,在菜单-移动平台-扩展服务导入。

注意使用扩展服务需要在配置文件的插件页签中勾选对应的插件

扩展服务制作和管理

1、准备材料

此处不讲解如何开发扩展的原生部分,开发扩展的原生部分可以参考本文的子文档(扩展开发手册和扩展SDK),假设扩展的原生部分已经开发完成
取Android及IOS扩展服务相关的源文件(包含原生服务、相关资源及启动文件)。

2、制作扩展服务

(1)、拷贝资源

以IM_Service为例,将准备的Android扩展服务相关的源文件(包含原生服务、相关资源及启动类)拷贝到IM_Serviceandroid目录下;IOS扩展服务相关的源文件(包含原生服务、相关资源及启动库)拷贝到IM_Serviceios目录下。

(2)、创建配置文件

在IM_Control目录下创建名为config.xml的配置文件,为避免创建的文件编码与平台不兼容,建议从示例(示例可通过文档最下方的链接下载)中直接拷贝,然后修改。如下图:

(3)、编辑配置文件

  1. <plug>
  2. <services type="android" name="YMCoreService">
  3. <import type="jar" ref="android/libs/" />
  4. <service method="initIMSDK" name="initIMSDK" classname="com.yonyou.sns.im.mobile.service.YMCoreService" description="IM初始化SDK">
  5. <arguments>
  6. <argument name="etpkey" type="String" description="用户的企业key" />
  7. <argument name="appkey" type="String" description="用户的应用key" />
  8. <argument name="callback" type="String" description="返回正确结果的回调处理方法" />
  9. <argument name="error" type="String" description="返回异常时的回调处理方法" />
  10. <argument name="usercontroller" type="String" description="提供用户信息的controller" />
  11. <argument name="tokencontroller" type="String" description="提供用户获取token的controller" />
  12. </arguments>
  13. </service>
  14. <service method="doLogin" name="doLogin" classname="com.yonyou.sns.im.mobile.service.YMCoreService" description="IM登陆">
  15. <arguments>
  16. <argument name="userid" type="String" description="用户id" />
  17. <argument name="username" type="String" description="用户的名字" />
  18. <argument name="callback" type="String" description="返回正确结果的回调处理方法" />
  19. <argument name="error" type="String" description="返回异常时的回调处理方法" />
  20. </arguments>
  21. </service>
  22. </services>
  23. <services type="android" name="YMUserService">
  24. <service method="getUser" name="getUser" classname="com.yonyou.sns.im.mobile.service.YMUserService" description="获得用户信息">
  25. <arguments>
  26. <argument name="userid" type="String" description="用户id" />
  27. <argument name="callback" type="String" description="返回正确结果的回调处理方法" />
  28. <argument name="error" type="String" description="返回异常时的回调处理方法" />
  29. </arguments>
  30. </service>
  31. </services>
  32. <services type="ios" name="YMCoreService">
  33. <import type="so" ref="ios/Framework/" obj="path"/>
  34. <import type="so" ref="ios/Library/" obj="path"/>
  35. <import type="so" ref="ios/Resource/" obj="path"/>
  36. <import type="so" ref="ios/Source/" obj="path"/>
  37. <service method="initIMSDK" classname="YMCoreService" hfile="YMCoreService.h" name="initIMSDK" description="IM初始化SDK">
  38. <arguments>
  39. <argument name="mapkey" type="String" description="IOS的申请高德地图key" />
  40. <argument name="apnscert" type="String" description="推送证书的名称" />
  41. <argument name="etpkey" type="String" description="用户的企业key" />
  42. <argument name="appkey" type="String" description="用户的应用key" />
  43. <argument name="callback" type="String" description="返回正确结果的回调处理方法" />
  44. <argument name="error" type="String" description="返回异常时的回调处理方法" />
  45. <argument name="usercontroller" type="String" description="提供用户信息的controller" />
  46. <argument name="tokencontroller" type="String" description="提供用户获取token的controller" />
  47. </arguments>
  48. </service>
  49. <service method="doLogin" classname="YMCoreService" hfile="YMCoreService.h" name="doLogin" description="IM登陆">
  50. <arguments>
  51. <argument name="userid" type="String" description="用户id" />
  52. <argument name="username" type="String" description="用户的名字" />
  53. <argument name="callback" type="String" description="返回正确结果的回调处理方法" />
  54. <argument name="error" type="String" description="返回异常时的回调处理方法" />
  55. </arguments>
  56. </service>
  57. </services>
  58. <services type="ios" name="YMUserService">
  59. <service method="getUser" classname="YMUserService" hfile="YMUserService.h" name="getUser" description="获得用户信息">
  60. <arguments>
  61. <argument name="userid" type="String" description="用户id" />
  62. <argument name="callback" type="String" description="返回正确结果的回调处理方法" />
  63. <argument name="error" type="String" description="返回异常时的回调处理方法" />
  64. </arguments>
  65. </service>
  66. </services>
  67. </plug>

(4)、属性说明

可自定义属性说明

  • services ame:服务组的名字
  • import ef:Android是指扩展的Jar包所在目录,IOS是指扩展的Source目录
  • servicemethod:服务对应的类方法名,开发时一般Android和IOS保持一致
  • service ame:服务的别名,用于在JS中调,一般和method保持一致
  • serviceclassname:Android为服务对应的类路径,IOS为类名
  • servicedescription:服务的描述
  • servicehfile:IOS类对应的头文件,仅IOS有
  • argument ame:参数的名字
  • argumentdescription:参数的描述

固定属性说明

  • services ype:平台类型(android表示Android;ios表示IOS)
  • import ype:源类型(jar表示Android库,res表示Android资源;so表示IOS库)
  • importobj:资源类型(path表示目录,file表示文件)
  • argument ype:参数的类型(一般为String)

(5)、制作压缩文件

将以上制作的目录压缩成zip包(包名随意),如下图:

3、扩展服务管理

制作完服务后可以首选项中将服务导入、导出及删除,如下图:

4、扩展服务使用

扩展服务导入并勾选所在的插件之后,就可以在JS调用相应的服务了,代码如下:

  1. summer.callService("YMCoreService.initIMSDK", {
  2. "etpkey" : "用户的企业key",
  3. "appkey" : "用户的应用key",
  4. "usercontroller" : "提供用户信息的controller",
  5. "tokencontroller" : "提供用户获取token的controller",
  6. "callback" : "microPhoneCallback()",
  7. "error" : "返回异常时的回调处理方法"
  8. }, false);
  9. function microPhoneCallback(args) {
  10. var keyword = $stringToJSON(args).text;
  11. $alert(keyword)
  12. }
  • YMCoreService为服务组的名字
  • initIMSDK为服务名(name和method不同时请使用name)

勾选所在的插件

配置第三方Framework
IOS扩展中如果使用了第三方Framework,则需要在ios-config.xml文件中配置framework。

文件位置如下:

配置内容如下:

  1. <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  2. <config>
  3. <sys-framework>
  4. <framework>CoreLocation.framework</framework>
  5. <framework>CoreTelephony.framework</framework>
  6. </sys-framework>
  7. <delegate-classes>
  8. <class>
  9. </class>
  10. </delegate-classes>
  11. <debugSettings>
  12. <debug>
  13. </debug>
  14. <release>
  15. </release>
  16. </debugSettings>
  17. </config>

5、扩展示例下载

地址:https://pan.baidu.com/s/1bNm8pS

文档更新时间: 2018-05-15 15:28