• 常见问题, 使用webView时, 常常需要调用Objective c的方法。 两种方式可以完成需求, 简单记录方便日后常看。 第一种是网页js调用方法loadURL();...iOS端:webView代理 - (BOOL)webView:(UIWebVi

    常见问题, 使用webView时, 常常需要调用Objective c的方法。

    两种方式可以完成需求, 简单记录方便日后常看。

    第一种是网页js调用方法loadURL();

    例如:

    网页端:

    loadURL("myWebView://callfunc?param1=1&param2=2.......");

    iOS端:webView代理

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType
    {
        NSString *url = [[request URL].absoluteString stringByRemovingPercentEncoding];
        NSLog(@"%@", url);
        if ([url hasPrefix:@"myWebView:"]) {
            //调用网页,弹出窗口
            [webView stringByEvaluatingJavaScriptFromString:@"alert(1);"];
        }
        return YES;
    }

    第二种方法

    在iOS代码处获取javaScriptContext, 得到上下文。
    具体代码:
    iOS端:webView代理
    - (void)webViewDidFinishLoad:(UIWebView *)webView
    {
    
        JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
        context[@"test1"] =  ^ NSString *() {
            NSArray *args = [JSContext currentArguments];
            for (id obj in args) {
                NSLog(@"%@",obj);
            }
            return @"123";
        };
        
    }

    此处, 申明一个方法名为test1的方法。
    网页端, js直接调用普通方法一样,直接调用即可。



    展开全文
  • iOS 与H5交互

    2016-03-17 14:18:59
    将HTML页面加载到UIWebview控件中:A:本地加载:NSString *webPath = [[NSBundlemainBundle]pathForResource:@“HelloWord"ofType:@"html”];//获取文件路径 NSURL *webURL = [NSURLfileURLWithPath:webPath];...

    将HTML页面加载到UIWebview控件中:

    A:本地加载:

    NSString *webPath = [[NSBundlemainBundle]pathForResource:@“HelloWord"ofType:@"html”];//获取文件路径
    NSURL *webURL = [NSURLfileURLWithPath:webPath];//通过文件路径字符串设置URL
    NSURLRequest *URLRequest = [NSURLRequestrequestWithURL:webURL];//设置请求提交的相关URL
    [self.webView loadRequest:URLRequest];//提交请求

    B:从服务器加载HTML页面

    NSString *urlStr = [NSString stringWithFormat:@"%@/appservice/getAnnouncementDetail.do?id=%@",O2O_URL,self.idStr];
    NSURL *url = [NSURL URLWithString:urlStr];
    NSLog(@"url:%@",url);
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    [self.webView loadRequest:request];

    2.加入UIWebViewDelegate委托(如果想要进行相应的数据交互必须添加相应的我委托)

    -(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType//html页面的js动作触发时运行
    -(void)webViewDidFinishLoad:(UIWebView *)webView //html加载完后触发

    3.OC提交JS请求.运行JS方法

    [self.webViewstringByEvaluatingJavaScriptFromString:@”方法名(%@)",参数]];

    4.JS提交请求到OC

    -(BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType{
    NSString *requestString = [[requestURL]absoluteString];//获取请求的绝对路径.
    NSArray *components = [requestStringcomponentsSeparatedByString:@":”];//提交请求时候分割参数的分隔符
    if ([componentscount] >1 && [(NSString *)[componentsobjectAtIndex:0]isEqualToString:@"testapp"]) {
    //过滤请求是否是我们需要的.不需要的请求不进入条件
    if([(NSString *)[components objectAtIndex:1]isEqualToString:@"change"])
    {
    //所要执行的操作
    }
    returnNO;
    }
    returnYES;
    }

    5.在HTML5中JS的写法

    1.接收请求的方法写法

    function
    fund(){
    //操作
    }

    2.提交请求的方法写法

    function sendCommand(cmd,param){
    var url="testapp:"+cmd+":"+param;//组合请求字符串
    document.location = url;//提交的请求
    }
    展开全文
  • JS与Android IOS 交互

    2017-11-15 11:59:09
    //首先判断IOS的webview是否存在该方法 if(typeof iOScheckOrder === 'function'){ iOScheckOrder(result);//调用ios }else if(window.orderId){//判断Android的对象是否存在  window.orderId.orderIdCallAndroid...
    //首先判断IOS的webview是否存在该方法
    if(typeof iOScheckOrder === 'function'){
        iOScheckOrder(result);//调用ios
    }else if(window.orderId){//判断Android的对象是否存在
       window.orderId.orderIdCallAndroid(result);//调用对象所对应的方法
    }
    

    Android  代码

    webview.addJavascriptInterface(new Object() {
         // 这里我定义了一个跳转
         @JavascriptInterface
         public void orderIdCallAndroid(String orderId) {
    	      if (orderId != null || orderId != "") {
                       ToastUtil.showToast(getApplicationContext(), "有订单未完成");
    	      }
         }
    }, "orderId");
    


    展开全文
  • ArcGIS Runtime SDKs v10.2.4最新,它包含:Android、iOS、OS X和.NET四大平台,用户和开发人员可以登录Esri最新的SDK安装包。或者通过云盘下载(http://pan.baidu.com/s/1eQpclTC): 1、Runtime SDK for ...

    ArcGIS Runtime SDKs v10.2.4最新,它包含:Android、iOS、OS X和.NET四大平台,用户和开发人员可以登录Esri最新的SDK安装包。或者通过云盘下载(http://pan.baidu.com/s/1eQpclTC):

    1、Runtime SDK for Android v10.2.4

    感谢Android团队的努力,增加了中国用户期待已久的空间数据直接支持功能,开发人员也能松口气。最终不必费劲写数据格式扩展了。

    ·        Android 平台要求

    更新了Android平台支持,最低版本号要求4.0.1,即级别为14的Cream Sandwich,而全部SDK演示样例都要求最低SDK版本号级别为15。

    ·        直接支持矢量和栅格格式

    添加了从设备上直接读取空间数据的能力,包含备受期待的Shape files、KML、Geopackages(存在SQLite里的切片和矢量数据)和一系列栅格格式,详见下表:

    ASRP/USRP

    CIB1,5,10

    DTED0, 1, 2

    GeoPackage

    GeoTIFF

    HFA

    HRE

    IMG

    JPEG

    JPEG2000

    PNG

    RPF

    SRTM1, 2

    NITF

     

     

    ·        空间分析(Beta)

    添加了本地的空间分析能力。借助了基于GPU的高速处理。太棒了!尽管还仅仅是beta版本号,已经忍不住要尝试一番,眼下支持两种分析:视线分析(Line of sight)和视域分析(Viewshed)。另外:x86的机器临时还用不了该功能。

    ·        Geodatabase接口

     添加了Geodatabase FeatureServiceTableAPI。支持使用在线和离线Geodatabases。包含:编辑跟踪,关联表查询和从非空间表创建Geodatabase FeatureServiceTable。这一接口在iOS SDK 10.2.3中已经支持。

    ·        地图交互改进

      添加了新的Map View缩放手势:双击地图后紧跟着向上垂直拖动就可以放大地图, 双击地图后紧跟着向下垂直拖动就可以缩小地图。

    这是闹哪样?事实上是为了支持可穿戴式设备做的交互改进,由于智能手表等设备的屏幕相对较小,两指的缩放手势不太灵光。

    眼下Esri已经在和一些可穿戴式设备厂商合作。期待ing !

    ·        关键的API改进:

    1.       添加了新的WMTSLayer,支持OGC的WMTS服务。

    2.       改进Web map接口。支持影像服务和WMTS服务。

    3.       改进弹出框(Callout),窗体大小自适应与内容视图。使其更美观。

    注:Text symbol临时还是不支持中文。

    很多其它信息请查看开发人员帮助: https://developers.arcgis.com/android/

    2、Runtime SDK for iOS & OS X v10.2.4

    针对苹果公司近期公布的设备和软件。ArcGIS SDK也进行了相应的更新:包含支持最新的iOS 8和OS X Yosemite操作系统,支持使用Xcode 6.1和新的Swift编程语言等增强。

    ·        支持iOS 8

    苹果近期公布了最新的移动操作系统iOS 8和两个新设备iPhone 6 & 6 Plus,同一时候也更新了开发方式,包含开发工具升级到Xcode 6和公布一种新的编程语言称为Swift。为此。ArcGIS Runtime SDK for iOS也相应做了更新:

    (1)添加了Xcode 6和iOS 8的支持,同一时候也会继续支持Xcode 5和iOS 7,兼容新老开发环境。

    (2)添加了对编程语言Swift支持,虽然该API还是须要在Objective-C中使用,但由于苹果提供了Swift和Objective-C之间的互操作性,开发人员全然能够混搭Swift和Objective-C开发应用程序。同一时候增强了Swift API的文档、教程和演示样例等来帮助开发人员高速上手。

    ·        支持OS X Yosemite

    Mac用户关注的新OS X版本号——Yosemite(约塞米蒂),估计今年晚些时候公布,苹果眼下并不正式支持使用Swift开发OS X应用,须要等到Xcode 6.1公布。

    Esri正在密切跟踪其进展和计划,并会在终于版本号公布后进行更新,陆续会放出一些演示样例,帮助OS X开发人员抢先尝试Swift。

    ·        关键的API改进:

    1.       支持Map Services动态服务的子图层类型。包含:调整子图层顺序,更改符号化方式和可见比例尺。

    2.       新增Task,依照空间数据自己主动匹配唯一值和分类符号化的分级方案。

    3.       支持web map中的影像服务(Image Service)进行信息窗体查询和更改符号化方式。

    4.       改进了地图在OS X上的操作手势,支持使用触摸板、键盘和Magic鼠标。

    能够看出,这一版本号iOS和OS X团队的重心是全面支持苹果的更新,而对于Android SDK公布的那些令人惊喜的功能增强,会在接下来的版本号增加到iOS和OS X SDK 。所以请继续关注。

    很多其它信息请查看开发人员帮助:

    iOS: https://developers.arcgis.com/ios/

    OS X: https://developers.arcgis.com/os-x/

    3、Runtime SDK for .NET v10.2.4

    2012年底微软公布的Windows 8平台和Windows Runtime, Esri的WPF团队讨论了对ArcGIS Runtime SDK for .NET的愿景,决定在微软新的技术体系上创建一套全新的、共享的ArcGIS原生API,随后的两年时间一直在做准备工作,如今ArcGIS Runtime SDK for .NET第一个正式版公布了 !

    考虑到开发者的体验和学习曲线,已经为WPF开发者提供指导手冊,方便其从原来的ArcGIS Runtime SDK for WPF过渡到新的SDK。

    作为一个现代、高性能的原生开发API,ArcGIS Runtime SDK for .NET支持离线工作流,支持 Shape files,支持client标注,支持 sync-enabled要素服务等等。期待看到大家用新的SDK创建很多其它更好的应用程序!

    谁能预料到.NET SDK在測试社区会有近3000名參与者的贡献,简直是一个神话,感谢你们的反馈。尽管Beta程序測试已经完毕,測试社区仍将在短时间内开放,方便查询10.2.3 beta和10.2.4之间的变化,查看错误报告的状态,并总结论坛讨论。

    很多其它信息请查看开发人员帮助:https://developers.arcgis.com/net/


    版权声明:本文博主原创文章,博客,未经同意不得转载。

    展开全文
  • Unity 与IOS基本交互

    2017-10-16 20:30:51
    Unity版本代码模版: using UnityEngine; using System.Collections; using System.Runtime.InteropServices; public class UIIosWifi : MonoBehaviour { //Unity将调用.m里的TestMsg()方法。...

    Unity版本代码模版:

    using UnityEngine;
    using System.Collections;
    using System.Runtime.InteropServices;
    
    public class UIIosWifi : MonoBehaviour {
    
        //Unity将调用.m里的TestMsg()方法。
        [DllImport("__Internal")]
        private static extern void TestMsg();//测试信息发送
    
        [DllImport("__Internal")]
        private static extern void TestSendString(string s);//测试发送字符串
    
        [DllImport("__Internal")]
        private static extern string TestGetString();//测试接收字符串
        
        void Start () {
    	
    	}
        void UnityToIosVoid()
        {
            TestMsg();
        }
        void UnityToIosString()
        {
            TestSendString("Unity将数据发送给IOs String类型");
        }
        void UnityGetIos()
        {
          string IosGet = TestGetString();
          Debug.Log(IosGet);
     
    分析:

    然后写XCODE方法调用:

    建一个.mm文件

    extern "C" {
        void TestMsg(){
            NSLog(@"Msg received");
            
        }
        
        void TestSendString(void *p){
            NSString *list = [NSString stringWithUTF8String:p];
            NSArray *listItems = [list componentsSeparatedByString:@"\t"];
            
            for (int i =0; i<listItems.count; i++) {
                NSLog(@"msg %d : %@",i,listItems[i]);
            }
            
        }
        string  _GetWifiLevel(){
            //方法
            string char="123123123123";
            
            NSLog(@"signal %d", signalStrength);
            NSLog(@"xcode上结果wifi");
            return signalStrength;
            
        }
    
    

    
    


    一个是Unity调用ios,第二个是Unity传值给ios方法,第三个是Unity获取ios方法的返回值。里面的参数根据需求进行更改,这就是个简单的模版。


    展开全文
  • 20个iOS开源项目

    2014-11-02 11:44:54
    摘要:iOS每一次的改变,总会引发iOS开源项目的演变,从iOS 1.x到如今的iOS 7,有的项目已被弃用,有的则继续发扬光大,新项目更是层出不穷。在本文中,我们将继续为大家介绍20个在GitHub上深受开发者欢迎的iOS开源...
  • 1. 以 Path、Facebook 为代表的「左侧隐藏...以上几种交互框架各自的有点和缺陷是什么?应用如何根据需要选择合适的交互框架? 2 条评论 分享 按票数排序 10 个回答 赞同 反对,不会显示
  • 如果应用是多媒体播放,电子杂志,下载之类http://www.zhihu.com/question/20114323
  • 招聘说明: 大部分程序员刚转型到讲师岗位,总会有一些怕自己不适合的担忧,我们对这部分程序员可提供丰富的周末兼职机会,让您稳定后,再进行职业转型。 由于传智播客的老师精于某个阶段课程的讲授,所以授课质量...
  • 五层架构分别为应用层、运输层、网络层...应用层:应用进程之间的交互,那么交互的数据单元是报文,交互的规则就是协议。不同的应用有不同的协议,常见的有WWW的HTTP协议,电子邮件的SMTP协议,文件传输的FTP协议。 ...
  • iOS和H5交互的两种方式 介绍两种iOS与H5交互的方式  一:在shouldStartLoadWithRequest 代理方法中拦截url,通过之前定义好的scheme协议来判断 H5端需要做什么。  二:在webViewDidFinishLoad 代理方法...
  • 摘要今天由我给大家进行一场技术分享,分享的主题也是大家还没有工作或者才去工作不久或者是正处于试用期的同学非常关心的一个问题,就是我们做iOS,HTML5,安卓等前端开发的如何跟我们的公司后台进行交互. 面临后台...
  • iOS 第三方框架大全

    2016-07-14 09:52:17
     实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网络下载图片并进行缓存。可对图片进行缩放等操作。  下载:https://github.com/mwaterfall/MWPhotoBrowser 目前...
  • WK的基本用法先不说了,主要在这里记录一下使用WKWebView在于H5交互时走过的一些坑,以及如果web端的同学如果没有做过和ios端的交互,那么自己也可以去帮助web端去完成;另外在调试过程中,也不用一味的去等待和H5去联调,...
  • H5与iOS交互

    2019-06-13 19:06:09
    - (void)webViewDidFinishLoad:(UIWebView *)webView { //js方法名+参数 NSString* jsCode = [NSString stringWithFormat:@"report('%@')",self.jsStr]; ... [webView stringByEvaluatingJ...
  • 前言之前有不少人为我关于JS与iOS进行交互的问题,也就是,我们怎么才能从通过获取JS的内容显示到指定的控制器中,今天我给大家写了一个Demo,在这里交互我们用到了WKWebView而不是UIwebview,至于问什么会使用它其实在前...
  • 硬件环境: 电脑、Iphone5手机 从IDA Pro6.2版本开始,已经完全支持苹果系统的反...经过一些分析,IOS内核和程序开发人员最经常交互的模块是I/O Kit。 从反汇编的角度来看,I/O Kit模块的代码完全就是由C++语言的代码
  • 前言:说起JS交互,很多童鞋会黯然色变,感觉很高深的样子。大部分小伙伴只知道一种,哪一种我也说说吧。  1.在webView中将要请求的时候,拦截URL,进行重定向,然而该场景实用有限,网上资料也很多下面说说另一种...
  • iOS资源大全中文版

    2016-04-01 12:00:05
    iOS资源大全中文版转自:...awesome-ios 就是 vsouza 发起维护的 iOS 资源列表,内容包括:框架、组件、测试、Apple Store、SDK、XCode、网站、书籍等。Swift 语言写成的项目会被标记为
  • iOS中支持的手势事件 UITapGestureRecognizer(敲击) UIPinchGestureRecognizer(捏合,用于缩放) UIPanGestureRecognizer(拖拽) UISwipeGestureRecognizer(轻扫) UIRotationGestureRecognizer(旋转) ...
1 2 3 4 5 ... 20
收藏数 26,665
精华内容 10,666
热门标签
关键字:

.net交互 ios