`

自定协议

 
阅读更多

首先看几个例子,更能说明本文要表达的意思,如果对例子不感兴趣,可以直接看下一阶段的分析。
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是一款...

    保密协议保密协议保密协议保密协议

    保密协议,也称为非披露协议(NDA),是法律文件的一种,用于保护敏感信息不被未经授权的第三方获取或使用。这种协议在IT行业中至关重要,因为许多公司和组织处理着涉及技术细节、源代码、商业策略等机密信息。以下...

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

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

    网络协议 网络协议

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

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

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

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

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

    2021年自动酸雨采样器及测定仪行业行政部门表格协议汇总 .pdf

    【2021年自动酸雨采样器及测定仪行业行政部门表格协议汇总】文档主要聚焦于该行业的行政管理过程中的各类表格与协议,旨在规范和优化行业内部的工作流程,提高工作效率,确保业务的合规性。以下是根据描述和部分内容...

    房屋预定协议书(修订标准版).pdf

    房屋预定协议书(修订标准版).pdf

Global site tag (gtag.js) - Google Analytics