热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOSAppExtension

原文地址:http:blog.csdn.netLOLITA0164articledetails79006272应用扩展介绍AppExtensiion是iOS8推出来的

原文地址:
http://blog.csdn.net/LOLITA0164/article/details/79006272

应用扩展介绍

App Extensiion是iOS8推出来的一个新特性,在iOS9,和iOS10中又相继推出了许多新的扩展点。

应用扩展程序可以让我们自定义功能和内容扩展到应用程序之外,并在用户与其他应用程序或系统交互时提供给用户使用。

我们可以创建一个应用程序扩展来启用特定的任务。例如,为了让用户将消息通过Web浏览器向发布到社交服务,可以提供一个共享扩展。或者,为了让用户赶上他们喜欢的团队,可以提供一个在通知中心显示当前运动成绩的今日小部件。我们甚至可以创建一个应用程序扩展,提供用户可以代替ios系统键盘使用的自定义键盘

举个最简单的示例,如《今日头条》

行为扩展

Photo Editing extensions (图片编辑扩展):

图片编辑扩展可以使用户直接在iphone的手机相册中利用第三方图片编辑软件提供的扩展来编辑图片。 
比如我现在有一张自拍照,想要编辑一下。如果没有图片编辑扩展的话,我只能打开美图秀秀之类的图片编辑软件,导入图片,编辑保存。有了图片编辑扩展之后,我只需要在系统相册中找到这张图片,点击分享按钮调出菜单,选择第三方的图片编辑扩展,就可以直接进入编辑界面,编辑完直接保存,而不用再打开这个图片编辑软件导入图片来进行编辑了。但是这个扩展仅限于在自带的相册中进行编辑,而不是所有app中图片都可以。

Document Provider extensions (文件提供者扩展):

文件提供者扩展会显示一个文件选择视图给用户,这些选择项可以让用户导入,导出,或者用其他app来打开这个文件。

Custom Keyboard extensions(自定义键盘扩展):

自定义键盘扩展可以让开发者创建系统键盘之外的自定义键盘,比如搜狗输入法。 
这个大家应该都很清楚了,水哥之前虽然没用过iphone,但是在iOS8之前应该是没有第三方输入法的,自从iOS增加了自定义键盘扩展之后,各种第三方输入法都蜂拥而至。


iOS9中的扩展点

网络相关的扩展点,很多的VPN,网络工具等软件都是基于这三个网络扩展点。


Packet Tunnel Provider extension :

可以利用这个扩展点来实现客户端的自定义VPN隧道协议。

App Proxy Provider extension:

利用这个扩展点可以实现客户端自定义透明网络代理协议。

Filter Data Provider and the Filter Control Provider extension:

利用这个扩展点可以实现动态的,基于设备的网络内容过滤。

Safari相关的扩展点,很多的Safari广告屏蔽软件都是基于下面这两个扩展点

Shared Links extension:

利用这个扩展点可以使用户在Safari的分享链接里面看到app的内容

Content Blocking extension :

利用这个扩展点,可以给Safari提供一个拦截列表,在这个拦截列表里面你可以描述当用户再使用Safari的时候你想要拦截的内容。

Index Maintenance extension:

利用这个扩展点实现在不重启app的情况下对app内的数据重新建立索引。

Audio Unit extension:

这个扩展点允许你的应用提供乐器、声音效果、声音发生器等,它们可以在GarageBand、Logic这类AU宿主应用里使用。扩展点还可以将完整的音频插件模式搬到iOS上并允许你在App Store里销售Audio Units插件


iOS10中的扩展点:

Call Directory extension: 
Intents extension: 
Intents UI extension: 
Messages extension: 
Notification Content extension: 
Notification Service extension: 
Sticker Pack extension: 
iOS10中又新增了6个扩展点,这些扩展点的加入,使得iOS10功能更加强大。iOS 10 应用扩展的剧变,对你的 iPhone 有什么影响


App Extension的工作原理,生命周期

1、工作原理:

应用扩展本身不是一个app,而只是对于某个app内容和功能的扩展,所以不能够单独的上架AppStore,而是跟随着你的app一起打包,这个包含应用扩展一起打包的app就叫做container app(容器app)。虽然应用扩展是包含在container app中打包的,但是运行时它并不是跟你的app在同一个进程上面,而且有可能同一个app extension会同时运行在不同的进程,因为有可能同时有几个程序都打开了这个app extension,这个用来打开某个app Extension的应用就叫做host app(宿主应用)。

当一个应用扩展在运行的时候,它能够直接和host app进行通信,但是无法和container app进行通信,甚至经常在应用扩展运行的时候,你的container app可能都没有打开。比如对于微信分享扩展来说,如果我要从一个新闻软件分享一篇新闻到微信,通过微信的分享扩展,我可以不用打开微信,甚至微信的进程都没有启动,我只要在新闻软件中直接通过扩展分享到微信就可以了,下次打开微信就可以看到。如果一个app extension 一定要和container app 进行通信的时候,可以利用opeURL()或者是 数据共享 (本文只是概念基础介绍,后面会有单独的文章来介绍如何实现)。

2、生命周期:

因为应用扩展不是一个完整,独立的app,所以它的生命周期跟我们正常的app并不一样。应用扩展是在用户从其它软件的界面或者系统界面打开它的时候启动,一般都是host app发出一个request,app extension对应的响应这个请求,在response结束之后,app extension的生命周期也就终止了。

转:https://www.cnblogs.com/saytome/p/8425576.html



推荐阅读
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • 阿里Treebased Deep Match(TDM) 学习笔记及技术发展回顾
    本文介绍了阿里Treebased Deep Match(TDM)的学习笔记,同时回顾了工业界技术发展的几代演进。从基于统计的启发式规则方法到基于内积模型的向量检索方法,再到引入复杂深度学习模型的下一代匹配技术。文章详细解释了基于统计的启发式规则方法和基于内积模型的向量检索方法的原理和应用,并介绍了TDM的背景和优势。最后,文章提到了向量距离和基于向量聚类的索引结构对于加速匹配效率的作用。本文对于理解TDM的学习过程和了解匹配技术的发展具有重要意义。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • 本文介绍了Linux系统中正则表达式的基础知识,包括正则表达式的简介、字符分类、普通字符和元字符的区别,以及在学习过程中需要注意的事项。同时提醒读者要注意正则表达式与通配符的区别,并给出了使用正则表达式时的一些建议。本文适合初学者了解Linux系统中的正则表达式,并提供了学习的参考资料。 ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
author-avatar
chunhuai
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有