守望者--AIR技术交流

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

搜索
热搜: ANE FlasCC 炼金术
查看: 1208|回复: 0

[IOS] iOS自定义URL方案解析

[复制链接]
  • TA的每日心情
    擦汗
    2018-4-10 15:18
  • 签到天数: 447 天

    [LV.9]以坛为家II

    1742

    主题

    2094

    帖子

    13万

    积分

    超级版主

    Rank: 18Rank: 18Rank: 18Rank: 18Rank: 18

    威望
    562
    贡献
    29
    金币
    51788
    钢镚
    1422

    开源英雄守望者

    发表于 2015-1-19 11:17:35 | 显示全部楼层 |阅读模式

    在ios中程序间互相调用可以通过url来解决。在oc里面直接在函数handleOpenURL 便可,但是在ane中就没那么简单了。下面详细介绍下air项目中url的设置和使用,使用支付宝快捷支付ane作为例子。网上有稀稀疏疏的几篇文章偶尔提及,但是并没有完全给出一个DEMO来.

    在此之前请详细阅读官方文档:传送门

    关于打开URL的ANE例子:传送门

    IOS里OC的处理方式:传送门

    在AIR中配置URL供其他程序调用


    1.首先需要在-app.xml中加入如下配置:([IPHONE]标签中)

    1. <font color="rgb(51, 51, 51)"><iPhone>
    2.         <InfoAdditions><![CDATA[
    3.             <key>UIDeviceFamily</key>
    4.             <array>
    5.                 <string>1</string>
    6.                 <string>2</string>
    7.             </array>
    8.             <key>CFBundleURLTypes</key>
    9.             <array>
    10.             <dict>
    11.                  <key>CFBundleURLSchemes</key>
    12.                 <array>
    13.                     <string>AlipayANE</string>
    14.                 </array>
    15.                 <key>CFBundleURLName</key>
    16.                 <string>com.rect.app</string>
    17.             </dict>
    18.         </array>
    19.         ]]></InfoAdditions>
    20.         <requestedDisplayResolution>high</requestedDisplayResolution>
    21.     </iPhone></font>
    复制代码
    在这类配置了一个Name为”com.rect.app”的Schemes.调用方式为”AlipayANE://”;
    2.在AIR项目代码中加入事件监控,如下:
    1. protected function handler_appComp($evt:FlexEvent):void
    2.             {
    3.                                  //ANE回调侦听
    4.                 AlipayExtension.getInstance().addEventListener(StatusEvent.STATUS,handler_status);
    5.                 //URL回调侦听
    6.                 NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE,onURLHandle);
    7.             }

    8.             protected function onURLHandle(e:InvokeEvent):void
    9.             {
    10.                 if(e.arguments.length>0){
    11.                     trace(e.arguments[0]);
    12.                     var str:String = e.arguments[0] as String;//把URL用String字符串的方式传给OC端
    13.                     AlipayExtension.getInstance().AlipayURLHandle_JustIOS(str);
    14.                 }
    15.             }
    复制代码
    3.然后在OC中如下获取URL对象:
    1. ANE_FUNCTION(AlipayUrl)
    2. {
    3.     NSLog(@"Entering AlipayUrl()");
    4.     FREObject fo = NULL;
    5.     context = ctx;
    6.     [[AlipayDel alloc] sendMegToAs:context code:@"AlipayUrl" level:@"alipay AlipayUrl begin"];
    7.     //获取URL的字符串
    8.     NSString * urlStr = getStringFromFREObject(argv[0]);
    9.     //支付宝相关参数 这里忽略
    10.     NSString * _allpayPubKey = getStringFromFREObject(argv[1]);
    11.     //NSString to NSURL
    12.     NSURL * _alipayURL = [NSURL URLWithString:urlStr];
    13.     //拿到URL后 做该做的事情(具体做什么 SDK会告诉你)
    14.     [[AlipayDel alloc] parse:_alipayURL _allpayPubKey:_allpayPubKey _context:context];
    15.     [[AlipayDel alloc] sendMegToAs:context code:@"AlipayUrl" level:@"alipay AlipayUrl ending"];
    16.     NSLog(@"ending AlipaySignCheck()");
    17.     return fo;
    18. }
    19. }
    复制代码
    就支付宝来说,如此便可在支付操作完成之后成功返回AIR应用程序.
    具体的请详细阅读支付宝快捷支付ANE源码:传送门enjoy your code
    本文来自:http://shadowkong.com/archives/1338


    守望者AIR技术交流社区(www.airmyth.com)
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    
    关闭

    站长推荐上一条 /4 下一条

    QQ|手机版|Archiver|网站地图|小黑屋|守望者 ( 京ICP备14061876号

    GMT+8, 2019-11-18 21:29 , Processed in 0.041581 second(s), 32 queries .

    守望者AIR

    守望者AIR技术交流社区

    本站成立于 2014年12月31日

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