`

自定协议

 
阅读更多

首先看几个例子,更能说明本文要表达的意思,如果对例子不感兴趣,可以直接看下一阶段的分析。
PC端的例子:
在浏览器地址栏输入tencent://message/?uin=88888888,然后回车,发现可以和QQ的陌生人聊天了,这个功能很早就有了。
Android的例子:
做Android开发的朋友(当然IOS也有类似的功能)都知道可以通过意图调用系统的功能,比如拨打电话:
Intent intent = new Intent(); 
intent.setAction(Intent.ACTION_CALL);  
intent.setData(Uri.parse("tel:15899996666")); 
startActivity(intent);
IOS的例子:
苹果的企业账户可以通过一种协议直接从公司的网站下载app并安装,不需要通过AppStore来下载,比如在html页面添加如下代码:<a href="itms-services://?action=download-manifest&amp;url=http://192.168.0.100:8080/latest/testapp.plist(plist文件的地址)">Install 应用</a>,然后通过浏览器打开,点击,发现可以直接下载应用了。


看完三个例子细心的朋友可能发现在三个平台上执行的程序都使用了一种模式的地址,如:
1、tencent://message/?uin=88888888;腾讯自己实现的协议,只有QQ可以解析这个命令具体要做什么
2、tel:15899996666;系统实现的协议,APP调用后可以拨打电话
3、itms-services://?action=download-manifest&amp;url=http://192.168.0.100:8080/latest/testapp.plist  苹果自己实现的协议,调用后可以绕过AppStore从其他网站下载APP,并安装

大家比较熟悉的是http://www.baidu.com,但是上面的是什么东东呢?他们比较像,同样也是协议调用,模式为:协议://命令?参数名称=参数值,这些协议可以是系统默认支持的(http、tel),也可以是用户自定义的(tencent、itms-services),对于 Windows、Linux 和 OS X 操作系统都支持自定协议,自定义协议可以帮助用户在同一系统上实现应用A调用应用B,比如直接在浏览器可以调用QQ,APP用tel协议调用系统拨打电话功能。

下面附上各操作系统如何实现自定义协议:
A protocol is a method that is used to send, receive, and handle information over a connection. Common protocols viewed from the browser include http, ftp, and mailto. In order for you to view information sent over a specific protocol, it must be registered. Once registered, the protocol can then be handled by the program you specify, such as your browser or a 3rd party viewer. This means that a hyperlink ( e.g. foo://fred ) can use the handler for protocol foo to open the file named fred.

Contents [hide]
1 Registering an unsupported protocol
1.1 Windows
1.2 Linux
1.3 OS X
2 Redirecting a registered protocol



[edit]Registering an unsupported protocol
Mozilla products utilize protocols defined internally, as well as those defined by the operating system. You can add the ability to use an unsupported protocol by registering it. The OS-specific method of doing this is described below.

[edit]Windows
Create the registry .reg file, replacing foo with your unregistered protocol, and the path with whatever handler program you want to run. Then merge it into the Windows registry.


REGEDIT4

[HKEY_CLASSES_ROOT\foo]
@="URL:foo Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\foo\shell]

[HKEY_CLASSES_ROOT\foo\shell\open]

[HKEY_CLASSES_ROOT\foo\shell\open\command]
@="\"C:\\Program Files\\Application\\program.exe\" \"%1\""
See Registering an Application to a URL Protocol for additional information.

[edit]Linux
Registration is unnecessary. Simply associate whatever proto: with a program through Firefox: Example: Add the sip: protocol to launch kphone for VoIP calls in Firefox:

- Type about:config into the address bar
- Right-click create new boolean value: network.protocol-handler.external.sip and set to true
- Right-click create new boolean value: network.protocol-handler.warn-external.sip and set to false
- Right-click create new string value: network.protocol-handler.app.sip and set to /usr/bin/kphone
This will actually launch kphone. Not sure if it will dial though. That is untested :)

You can also optionally register the protocol with whatever window manager you are using. In KDE this is done through Control Center - KDE Components - File Associations. This step is usually unnecessary unless your window manager has a custom browser, such as konqueror.

[edit]OS X
Probably very similar to Linux (above).

[edit]Redirecting a registered protocol
If the protocol is already handled by the browser, you can specify what program will be used as a handler to open the file. To do this, add the pref:
network.protocol-handler.app.foo as a string with value C:\Program Files\Application\program.exe
Note: If the path or name is incorrect, the browser will display an error saying "protocol (foo) isn't associated with any program". (See bug 312953).

You may also need to use the following prefs, although this is uncertain:
network.protocol-handler.external.foo = true
network.protocol-handler.expose.foo = false

分享到:
评论

相关推荐

    基于Linux C的聊天室的自定协议规范

    Linux C大作业里面写了个聊天室的客户端,里面用到的传输协议规范 大作业介绍在 http://blog.csdn.net/u013174374/article/details/27805155

    海康、大华、宇视等主流摄像机rtsp协议格式整理

    海康、大华、宇视等主流摄像机rtsp协议格式整理

    基于netty5的自定义协议Demo

    2. 创建luck协议的编码器类,继承自`ChannelOutboundHandlerAdapter`。在这个类中,我们需要重写`write(ChannelHandlerContext ctx, Object msg, ChannelPromise promise) throws Exception`方法,将luck协议对象...

    C 写的RS232协议程序

    标题 "C 写的RS232协议程序" 指的是使用C语言编写的一段代码,该代码设计用于处理RS232串行通信协议。RS232是早期广泛应用于计算机之间的串行通信标准,它定义了接口信号、电压水平、连接器类型以及传输速率等参数。...

    易语言源码易语言自定服务客户协议源码.rar

    易语言源码易语言自定服务客户协议源码.rar 易语言源码易语言自定服务客户协议源码.rar 易语言源码易语言自定服务客户协议源码.rar 易语言源码易语言自定服务客户协议源码.rar 易语言源码易语言自定服务客户协议...

    易语言自定服务客户协议源码.rar

    在“易语言自定服务客户协议源码.rar”这个压缩包中,包含的是使用易语言编写的服务端和客户端的源代码,以及一个名为“源码使用说明.txt”的文本文件,用于指导用户理解和使用这些源码。 首先,让我们来深入理解...

    易语言自定服务客户协议源码.zip易语言项目例子源码下载

    易语言自定服务客户协议源码.zip易语言项目例子源码下载易语言自定服务客户协议源码.zip易语言项目例子源码下载易语言自定服务客户协议源码.zip易语言项目例子源码下载 1.合个人学习技术做项目参考 2.适合学生做毕业...

    Labview网络通信.pptx

    在网络通信中,协议是无处不在的,标准协议、自定协议等等网络协议的选择取决于不同的应用场景。例如,在开发嵌入式网络产品时,可以使用 ICMP 协议来实现网络状态检测。如果要求 NetWare 的资源,可以选用 IPX 协议...

    房屋定购协议书.pdf

    9. **协议副本**:协议书通常至少一式三份,买卖双方及中介公司各执一份,自签署后生效。 10. **违约责任**:未在约定时间签订《商品房买卖合同》的一方可能会丧失定金或面临双倍返还定金的处罚。 11. **法律依据*...

    易语言客户源码,易语言服务源码,易语言自定服务客户协议

    总的来说,这份“易语言自定服务客户协议源码”是一个很好的学习资源,它涵盖了网络通信的基础知识,包括连接建立、数据发送、数据接收和处理等关键环节。对于想要深入学习易语言或者网络编程的初学者来说,这是一个...

    GPRS远程数据传输设备

    它支持多种标准通讯协议,用户可以自定协议,支持透明传输。此外,它还支持远程参数设置、程序升级,具有远程管理功能。 在数据采集和传输方面,GPRS远程数据传输设备采用数据采集、传输一体化设计,可以通过GPRS...

    基于STC12C5A单片机的MS5611程序 气压计 IIC协议 气压定高

    在本文中,我们将深入探讨如何使用STC12C5A60S2单片机与MS5611气压传感器通过IIC协议实现气压定高功能。STC12C5A60S2是一款8位单片机,因其低功耗、高性能和丰富的I/O端口而在嵌入式系统中广泛应用。而MS5611是一款...

    中航信Eterm协议解析_中航信Eterm协议解析_Eterm协议_eterm_中航信协议

    Eterm协议,全称为Eterm系统通信协议,是由中国民航信息网络股份有限公司(简称中航信)开发的一种专有通信协议,它使得航空公司的代理人、旅行社和其他服务提供商能够通过计算机系统与中航信的中央数据库进行交互。...

    基于STM32的PID参数自整定(在FreeRtos上实现)

    本文将深入探讨如何在STM32微控制器上,基于FreeRTOS实时操作系统实现PID参数的自整定。STM32是意法半导体(STMicroelectronics)推出的一种32位微控制器系列,广泛应用于工业控制、物联网设备等领域。FreeRTOS则是...

    MCGS与PIC单片机自定通讯协议驱动.mdr

    使用MCGS脚本开发工具自制的驱动文件,通过查看该实例,可快速掌握MCGS通讯驱动的编写方法,是很好的自学实例,推荐下载!

    网络协议 网络协议

    - 分组路由选择,根据路由表决定数据包的转发路径。 6. **HTTP(超文本传输协议)**: - 应用层协议,用于从Web服务器获取资源,如HTML文档。 - 采用请求-响应模式,客户端发起请求,服务器返回响应。 - 版本...

    2021年汽车尾气自动测定仪行业行政部门表格协议汇总 .pdf

    【2021年汽车尾气自动测定仪行业行政部门表格协议汇总】 汽车尾气自动测定仪行业在2021年经历了一系列的行政管理和规范调整,以确保该行业的健康发展和环境保护目标的达成。行政部门在这一过程中扮演了至关重要的...

    污水处理厂接纳协议【污水接纳处理协议】.rar

    污水处理厂接纳协议是一种重要的法律文件,它涉及到环境保护、城市规划以及工业生产等多个领域。这份协议通常由污水处理厂与需要排放污水的企业或机构签订,旨在规范污水的排放行为,确保污水经过必要的处理达到国家...

    华为网络基础协议系列05-PPP协议

    PPP(Point-to-Point Protocol)协议,作为一项关键的链路层技术,自1994年正式发布以来,凭借其强大的功能与灵活性,在网络通信领域占据了重要地位。PPP协议起源于SLIP(Serial Line IP)协议,但相较于SLIP仅支持...

    pjlink协议,网络控制投影机所有功能

    pjlink协议是一种网络控制协议,专门用于远程管理和控制投影设备,如商务会议、教育机构以及专业视听场所中的投影机。该协议使得用户可以通过局域网(LAN)对投影机进行一系列操作,极大地提升了设备管理的便利性和...

Global site tag (gtag.js) - Google Analytics