jar包完成后,剩下就是要构建ANE包来供实际程序调用。

首先要建两个Flex库项目, default那个是官方建议加上的,仅用于不在真实环境下编译调试的时候有个默认接口不至于调用不成功报错,项目结构如下:

首先介绍配置文件extension.xml, 这个是必须的,用于指定平台和接口会直接打到ANE包里。

<extension xmlns="http://ns.adobe.com/air/extension/3.1"><id>nav.wenbo.service</id>
<versionNumber>0.0.1</versionNumber>
<platforms>
<platform name="Android-ARM">
<applicationDeployment>
<nativeLibrary>libAndroidServiceLib.jar</nativeLibrary><initializer>nav.wenbo.service.ServiceExtension</initializer>
</applicationDeployment>
</platform>
<platform name="default">
<applicationDeployment/>
</platform></platforms>
</extension>

这里我只配置了Andriod平台,配置的平台都必须在ANE包结构中有对应的目录,如需支持其它平台如iPhone,要加上如下配置

<platform name="iPhone-ARM">
<applicationDeployment>
<nativeLibrary>XXXLib.a</nativeLibrary>
<initializer>XXXExtensionInitializer</initializer>
<finalizer>XXXExtensionFinalizer</finalizer>
</applicationDeployment>
</platform>

接下来,创建ServiceController, 首先是要获取到扩展的上下文.

        private var extContext:ExtensionContext;public function ServiceController(){super();extContext = ExtensionContext.createExtensionContext( "nav.wenbo.service", "" );//注意这个是要和extensiion里的id对应if ( !extContext ) {throw new Error( "service native extension is not supported on this platform." );}}

当然,大部分时候会需要本地扩展返回的消息,这里加个监听

extContext.addEventListener( StatusEvent.STATUS, onStatus );

那么,就可以通过这个上下文来调用jar包中的方法。

        public function setNotification($msg:String="hei~ here is a test from wenbo!"):void{extContext.call( "send", $msg );}private function init():void {extContext.call( "init" );}public function startAndriodService():void{extContext.call( "service", true);}public function stopAndriodService():void{extContext.call( "service", false);}

完整代码:

package nav.wenbo.service
{import flash.events.EventDispatcher;import flash.events.StatusEvent;import flash.external.ExtensionContext;public class ServiceController extends EventDispatcher{private static var _instance:ServiceController;private var extContext:ExtensionContext;public function ServiceController(){super();extContext = ExtensionContext.createExtensionContext( "nav.wenbo.service", "" );//注意这个是要和extensiion里的id对应if ( !extContext ) {throw new Error( "service native extension is not supported on this platform." );}extContext.addEventListener( StatusEvent.STATUS, onStatus );init();}protected function onStatus(event:StatusEvent):void{var lev:String = event.level;trace("status change");}public static function get instance():ServiceController{if(null == _instance) _instance = new ServiceController;return _instance;}public function setNotification($msg:String="hei~ here is a test from wenbo!"):void{extContext.call( "send", $msg );}private function init():void {extContext.call( "init" );}public function startAndriodService():void{extContext.call( "service", true);}public function stopAndriodService():void{extContext.call( "service", false);}}
}

在ServiceLibDefault,直接把ServiceController拷过去,把所有外部引用去掉就可以了。

package nav.wenbo.service
{import flash.events.EventDispatcher;public class ServiceController extends EventDispatcher{private static var _instance:ServiceController;public function ServiceController(){super();}public static function get instance():ServiceController{if(null == _instance) _instance = new ServiceController;return _instance;}public function setNotification($msg:String="hei~ here is a test from wenbo!"):void{trace( "send", $msg );}private function init():void {trace( "init" );}public function startAndriodService():void{trace( "service", true);}public function stopAndriodService():void{trace( "service", false);}}
}

下一节,我会介绍把前三节的工作打包成一个ANE包供项目调用。

转载于:https://www.cnblogs.com/Free-Thinker/p/3273223.html

通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(三)相关推荐

  1. 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(二)

    着手改造之前,有兴趣可以阅读下官方文档:http://help.adobe.com/zh_CN/air/extensions/index.html 新建工程 NavService 并创建包 nav.w ...

  2. 用JPUSH极光推送实现服务端向安装了APP应用的手机推送消息(C#服务端接口)

    这次公司要我们做一个功能,就是当用户成功注册以后,他登录以后要收到消息,当然这个消息是安装了我们的手机APP应用的手机咯. 极光推送的网站的网址是:https://www.jpush.cn/ 极光推送 ...

  3. ios 消息服务器,关于IOS APNS推送消息(iphone端+服务端)

    这两天,项目要求做个推送功能,研究了一天,在此跟各位分享下.因为之前做了一年的php,所以服务端我自己写的,php语言. 1:请求证书,APPID各种繁琐的操作,我就不多话了,我也是看网上例子的. h ...

  4. Android Cloud to Device Messaging 服务介绍 – 如何使用云计算推送消息到手机(转载)...

    基 于 Android 的手机是面向移动互联网的手机,保持24小时在线才能充分发挥它的全部能量.而 Google 也在不断提供各式各样的网络服务来吸引用户,有的服务是直接面向终端用户,而有的服务是面向 ...

  5. android推送服务不被关闭,Android APP被关闭后无法收到推送消息(尝试)

    1.   Android端进程被杀死后,目前自带的保护后台接收消息活跃机制.暂时没有什么好的机制保持任何情况下都活跃 文章参考:http://blog.csdn.net/marswin89/artic ...

  6. Java 服务端推送消息有那么难吗?

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 转自公众号:码农小胖哥 今天项目经理交给我一个开发任务.如果有人在前台下了订单就给后台仓库管 ...

  7. 苹果推送消息服务(转)

    苹果推送消息服务 .NET 开源项目:https://github.com/Redth/APNS-Sharp Push的原理: Push 的工作机制可以简单的概括为下图 图中,Provider是指某个 ...

  8. android点击通知跳转到服务,Android 接收推送消息跳转到指定页面的方法

    问题的提出 本次接入的是个推,其他家的推送没有研究过,思路应该是类似的 App在前台,这个时候需要弹出一个对话框,提醒用户有新的消息,是否要查看,查看的话跳转到指定页面 App在后台,或是App进程已 ...

  9. JAVA 网络编程 Socket 详细说明,实现客户端和服务端相互推送消息

    客户端代码: package com.lcx.socket;import java.io.BufferedReader; import java.io.BufferedWriter; import j ...

  10. nett服务器接收消息的方法,C#(一沙框架) .net core3.1 SignalR 服务端推送消息至客户端的实现方法,用弹窗插件进行显示,非常美观实用...

    C#(一沙框架) .net core3.1 SignalR 服务端推送消息至客户端的实现方法,用弹窗插件进行显示,非常美观实用 运行效果: 1.安装Microsoft.AspNetCore.Signa ...

最新文章

  1. mysql备份与还原
  2. win32下安装mingw32和cmake来编译opencv2.4.9
  3. biu~ 你的智能语音客服已免费一键生成!
  4. 学完计算机还是不懂,如果看了这篇文章你还不懂傅里叶变换,那就过来掐死我吧...
  5. 64位Ubunu 16.04系统安装最新版本的wine 4.0
  6. 如何远程管理Quartz
  7. 【luogu P3627 [APIO2009]抢掠计划】 题解
  8. 腾讯人均月薪8万!第一季度财报发布:微信月活数恐怖,游戏平均日赚4亿
  9. Win7的常用快捷键以及设置
  10. get和post的区别
  11. 奥斯汀页眉怎么设置_wps怎么只删除本页的页眉_Word页眉的设置和删除,这些问题你有遇到过吗?...
  12. stm32定时器3产生1us延时的函数
  13. 2018-09-13 代码翻译尝试-使用Roaster解析和生成Java源码
  14. 微信小程序页面onLoad获取app.js的onLaunch数据(异步获取用户信息)
  15. Python pip 修改镜像源为豆瓣源的两种方法
  16. goland dlv调试正在运行的程序
  17. 前装ADAS单月搭载量创11个月以来新低,“缺芯”背后暗潮涌动
  18. 怎样伪原创视频 如何查看视频的md5
  19. 1211: 8102 开关
  20. 最新超好看释梦个人发卡网源码+详细教程

热门文章

  1. RIdeogram 染色体图谱可视化R包
  2. 树莓派 小型服务器的搭建
  3. MATLAB求解一阶RC电路和二阶RLC电路
  4. 史上首次,45岁边缘计算大牛蒋濛当选普渡大学校长!
  5. 多伦多大学计算机专业硕士,多伦多大学计算机硕士专业 看你满足录取要求吗...
  6. 缓解精神内耗的“马原疗法”
  7. weiui使用jquery infinite无限滚动加载,数据重复自执行
  8. mysql error1205 博客_MySQL的ERROR 1205错误分析
  9. 《R3Det:Refined Single-Stage Detector with Feature Refinement for Rotating Object》论文笔记
  10. qml中Popup元素的 aboutToShow和 opened()的区别