http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 7699|回复: 0

[Android] 怎么样用浏览器打开App 之自定义URL scheme for iOS与Android

[复制链接]
发表于 2014-6-11 16:31:00 | 显示全部楼层 |阅读模式
自定义URL scheme 的好处就是你可以在其它程序中通过这个url打开应用程序。如A应用程序注册了一个url scheme:myApp,  那么就在mobile浏览器中就可以通过<href='myApp://'>打开你的应用程序A。       iOS与Android在这儿有点小区别,在iOS中如果系统注册了url scheme且安装了那个应用程序,通过上面那种网页的方式就可以启动应用程序,如果没有注册或没有安装那个应用程序,就没有任何效果(你注册的url scheme不能是http://xxx 这样的)。在Android系统中注册了url scheme且安装了那个应用程序,通过上面那种网页的方式就可以启动应用程序,如果没有注册或没有安装那个应用程序,就没有任何效果; 如果注册了是http://xxx这样的,就会弹了一个对话框让你选,是打开网页还是程序。iOS中不能注册http://xxx这样的url scheme,而Android是可以的。

在IOS或Android平台上,adobe air打包的移动应用中也能自定义URL scheme,在air应用描述文件中定义。
例,要注册一个自定URL scheme是my-scheme如下:
android平台:
[C#] 纯文本查看 复制代码
<android>
    <manifestAdditions>
    <![CDATA[
        <manifest android:installLocation="auto">
            <application> 
                <activity> 
                    <intent-filter> 
                        <action android:name="android.intent.action.VIEW"/> 
                        <category android:name="android.intent.category.BROWSABLE"/> 
                        <category android:name="android.intent.category.DEFAULT"/> 
                        <data android:scheme="my-scheme"/> 
                    </intent-filter> 
                </activity> 
            </application> 
            <uses-permission android:name="android.permission.INTERNET"/>
        </manifest>
    ]]>
    </manifestAdditions>
</android>

IOS平台:
<iPhone>
    <InfoAdditions>
    <![CDATA[
        <key>UIDeviceFamily</key>
        <array>
            <string>1</string>
            <string>2</string>
        </array>

        <key>CFBundleURLTypes</key>
        <array>
            <dict>
                <key>CFBundleURLSchemes</key>
                <array>
                    <string>my-scheme</string>
                </array>
                <key>CFBundleURLName</key>
                <string>com.myapp</string>
            </dict>
        </array>

    ]]>
    </InfoAdditions>
        <requestedDisplayResolution>high</requestedDisplayResolution>
</iPhone>

        也能从请求源传参数到要启动的应用,参数放在URL scheme的冒号后面,如:my-scheme:myparam,在air的应用中能监听外部的调用事件如:NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, onInvoke);在事件中通过InvokeEvent类的arguments属性来取得传来的参数,它是一个数组,例如:
      NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, onInvoke);
      private function onInvoke(event:InvokeEvent):void
      {
                trace("Arguments: " + event.arguments);
      }

但是在AIR apps中用自定义URL schemes调用别的apps是不允许的,AIR的安全模型对于schemes在http:,sms:,tel: ,mailto:, file:  ,app:  ,app-storage: ,vipaccess:和connectpro:中的限制是很严格的。自定义URL scheme 的好处就是你可以在其它程序中通过这个url打开应用程序。如A应用程序注册了一个url scheme:myApp,  那么就在mobile浏览器中就可以通过<href='myApp://'>打开你的应用程序A。       iOS与Android在这儿有点小区别,在iOS中如果系统注册了url scheme且安装了那个应用程序,通过上面那种网页的方式就可以启动应用程序,如果没有注册或没有安装那个应用程序,就没有任何效果(你注册的url scheme不能是http://xxx 这样的)。在Android系统中注册了url scheme且安装了那个应用程序,通过上面那种网页的方式就可以启动应用程序,如果没有注册或没有安装那个应用程序,就没有任何效果; 如果注册了是http://xxx这样的,就会弹了一个对话框让你选,是打开网页还是程序。iOS中不能注册http://xxx这样的url scheme,而Android是可以的。

在IOS或Android平台上,adobe air打包的移动应用中也能自定义URL scheme,在air应用描述文件中定义。
例,要注册一个自定URL scheme是my-scheme如下:
android平台:
<android>
    <manifestAdditions>
    <![CDATA[
        <manifest android:installLocation="auto">
            <application>
                <activity>
                    <intent-filter>
                        <action android:name="android.intent.action.VIEW"/>
                        <category android:name="android.intent.category.BROWSABLE"/>
                        <category android:name="android.intent.category.DEFAULT"/>
                        <data android:scheme="my-scheme"/>
                    </intent-filter>
                </activity>
            </application>
            <uses-permission android:name="android.permission.INTERNET"/>
        </manifest>
    ]]>
    </manifestAdditions>
</android>

IOS平台:
[XML] 纯文本查看 复制代码
<iPhone>
    <InfoAdditions>
    <![CDATA[
        <key>UIDeviceFamily</key>
        <array>
            <string>1</string>
            <string>2</string>
        </array>

        <key>CFBundleURLTypes</key>
        <array>
            <dict>
                <key>CFBundleURLSchemes</key>
                <array>
                    <string>my-scheme</string>
                </array>
                <key>CFBundleURLName</key>
                <string>com.myapp</string>
            </dict>
        </array>
    ]]>
    </InfoAdditions>
        <requestedDisplayResolution>high</requestedDisplayResolution>
</iPhone>

        也能从请求源传参数到要启动的应用,参数放在URL scheme的冒号后面,如:my-scheme:myparam,在air的应用中能监听外部的调用事件如:NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, onInvoke);在事件中通过InvokeEvent类的arguments属性来取得传来的参数,它是一个数组,例如:
   
[C#] 纯文本查看 复制代码
  NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, onInvoke);
      private function onInvoke(event:InvokeEvent):void
      {
                trace("Arguments: " + event.arguments);
      }


但是在AIR apps中用自定义URL schemes调用别的apps是不允许的,AIR的安全模型对于schemes在http:,sms:,tel: ,mailto:, file:  ,app:  ,app-storage: ,vipaccess:和connectpro:中的限制是很严格的。


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-12-19 18:19

© 2014-2021

快速回复 返回顶部 返回列表