根据需求需要将老项目中的 WebView 替换成 WKWebView,期间查阅了不少文档和资料,之前也发布了几篇 WKWebView 相关的优秀文章。
A:页面的脚本逻辑是在JsCore中运行,JsCore是一个没有窗口对象的环境,所以不能在脚本中使用window,也无法在脚本中操作组件
导语 微信小程序开发者和开发需求者必读,内容涵盖小程序开发实战需要注意的40个技术点,供大家参考: 问答 Q Q1:为什么脚本内不能使用window等对象 A:页面的脚本逻辑是在JsCore中运行,J
从堆栈可以看出是indexPath无效,通常是indexPath的section或者row超过了数据的大小;
今天在对接一个网页时加载网页总是碰到 Error loading page Domain: WebKitErrorDomain Error Code: 101 The URL can't be shown (无法显示的URL)这样的错误,当然WebView屏幕中间也出现了这样错误的提示和内容。
前言 iOS开发中,权限问题不可避免; 写了文章iOS开发中的这些权限,你搞懂了吗?和[续]iOS开发中的这些权限,你搞懂了吗?,介绍了系统涵盖的16种权限访问的原理和方法; 开源库JLAuthorizationManager,整理并提供常用权限访问的便捷方法; 开源库基本使用 针对相册、蜂窝网络、相机、麦克风、通讯录、日历、提醒事项、定位、媒体资料库、语音识别、Siri等,可统一使用一下的方法入口: /** 请求权限统一入口 @param authorizationType 权限类型 @para
微信小程序开发者和开发需求者必读的40条技巧分享: Q:为什么脚本内不能使用window等对象 A:页面的脚本逻辑是在JsCore中运行,JsCore是一个没有窗口对象的环境,所以不能在脚本中使用window,也无法在脚本中操作组件 Q:为什么 zepto/jquery 无法使用 A:zepto/jquery 会使用到window对象和document对象,所以无法使用。 Q:wx.navigateTo无法打开页面 A:一个应用同时只能打开5个页面,当已经打开了5个页面之后,wx.navigateTo不能正
微信小程序开发者者必读,内容涵盖小程序开发实战需要注意的40个技术点,供大家参考: Q:为什么脚本内不能使用window等对象 A:页面的脚本逻辑是在JsCore中运行,JsCore是一个没有窗口对象的环境,所以不能在脚本中使用window,也无法在脚本中操作组件 Q:为什么 zepto/jquery 无法使用 A:zepto/jquery 会使用到window对象和document对象,所以无法使用。 Q:wx.navigateTo无法打开页面 A:一个应用同时只能打开5个页面,当已经打开了5个页面之后,
本文重点是拉取最新SDK库、iOS14的idfa适配以及iOS13的modal样式适配
至于 FlatList SectionList 自带的上拉加载功能,根本就是骗人的。
PS: 视频播放器不全屏显示 , iOS 10 以下使用 webkit-playsinline 属性
前言 我们大前端团队内部 📖每周一练 的知识复习计划还在继续,本周主题是 《Hybrid APP 混合应用专题》 ,这期内容比较多,篇幅也相对较长,每个知识点内容也比较多。 之前分享的每周内容,我都整理到掘金收藏集 📔《EFT每周一练》 上啦,欢迎点赞收藏咯💕💕。 注:本文整理资料来源网络,有些图片/段落找不到原文出处,如有侵权,联系删除。 一、什么是 Hybrid App,与 Native App 及 Web App 有什么区别 参考文章: 《Web App Hybrid App和 Native Ap
前言 我们大前端团队内部 ?每周一练 的知识复习计划还在继续,本周主题是 《Hybird APP 混合应用专题》 ,这期内容比较多,篇幅也相对较长,每个知识点内容也比较多。 之前分享的每周内容,我都整
构建消息元素后,实例化一个 TIMMessage 对象,然后调用 addElement() 方法构建到 TIMMessage 消息对象中,不推荐在同一个消息对象中使用多个元素
该文介绍了如何将MVC模式迁移到MVVM模式,探讨了MVVM模式的优势和应用场景,并给出一个使用RestKit简化网络请求的示例代码。同时,文章还介绍了MVVM模式在iOS开发中的应用,并指出定义良好的接口是成功应用MVVM模式的关键。
说到自定义控件不得不提的就是接口回调,在Android开发中接口回调用的还是蛮多的。在这篇博客开始的时候呢,我想聊一下iOS的自定义控件。在iOS中自定义控件的思路是继承自UIView, 在UIView的子类中组合一些控件,对外暴漏一些属性和回调接口,并留有必要的实现方法。在iOS自定义控件中常用的回调有两种,一是委托代理回调(Delegate),另一种是Block回调。如果你想对这两者有所了解,请参考我之前的博客《Objective-C中的委托(代理)模式》、《Objective-C中的Block回调模式
2017-02-18日更新 一、声明: 1.1 此文章是继iOS-微信支付(一)前戏之后的文章,有疑问,请回顾前一篇文章 1.2 微信支付签名、加密都在服务器端做,此篇文章只调用服务器接口获取(pa
前言: WKWebView 这是在iOS8.0之后增加的一个比UIWebView更加完善和强大的控件!看网上关于它的博客也是有许多的了,从各个方面总结一下这个WKWebView看网上说它主要是为了和JS做好交互产生的,我们也会相应的尝试一下。就先从它基本的说起! 一:和UIWebView相比它的不同处 1:和JS更好的做交互,也支持H5的一些新特性 2:加载进度条(下面会演示) 3:性能高,加载变得更快更可靠 二:从加载一张网页开始 1:使用这个WKWebView是要#import <WebKi
关于系统权限的获取,相信大家都不陌生,可是其中蕴含的知识确实不少。 怎样向用户索取权限是非常重要的。例如LBS类的应用,如果在索取权限时遭到用户的拒绝,那么该应用基本等同于无用了,更坏的是,点击“不允许”是很轻松的,而要撤销这个决定则不太容易,用户至少需要以下五步,一次性成功获取权限的重要性不言而喻,
前言 社会的模式很多是重复的,当你做一样事情很擅长时,与之类似的事情也能触类旁通。 正文 Code开发 1、delegate的trick 很多人习惯在调用delegate,先用responseToSelector判断,方法是否有被实现,再执行回调方法。 但是,在较长的时间之后、或者其他人更改delegate代码的时候,如果更改声明,Xcode会提醒开发者delegate的方法没有实现,但是responseToSelector是无法提示的。 这样就很容易触发之前responseToSelector埋下的
在App的开发过程中,我们通常都需要了解App以及各个页面的生命周期,方便我们在App进入前台时启动一些任务,在进入后台后暂停一些任务。同时,各个页面的生命周期也很重要,每个页面消失时要做一些内存清理、计时器清除、通知清除等操作。所以,本文主要就是学习一下在flutter开发App的时候,如何去怼App以及各个页面的生命周期进行监听和回调。
前段时间在处理 iOS 端的 HTTPDNS 相关 SDK,在接入和测试环节发现大家对 HTTP 的整体请求流程包括 HTTP 劫持原理以及 HTTPDNS 的工作原理并不是太清楚,所以写下这边文章帮助大家深入 web 请求过程:如何发起请求,HTTP 协议解析,DNS 域名解析。
VOIP是Apple提供给开发者的网络电话功能接口。简单来说,其可以让你的应用程序在完全杀死的情况下被服务端唤醒。CallKit是iOS10引入的新框架,使用它可以让你的应用程序调用系统的通话和通话记录界面。试想一下,用户可以在锁屏,应用被杀死,应用在后台等情况下收到通讯请求并且弹出系统的通话界面进行交互是多么酷的一件事。
前端获取code---把code给后端去获取openID---将openID和订单信息发给后端获取微信支付所需参数(订单号、appid、微信签名等信息)---调起微信支付api---成功回调(失败回调)
上一篇主要讲述了一个APP的架构分析和设计,这一篇我们就说一下APP架构中的网络层。
查看CLLocationManager的授权状态: [CLLocationManager authorizationStatus
重定向 URL 是 OAuth 流程的关键部分。用户授权应用成功后,授权服务器会将用户重定向回应用。由于重定向 URL 将包含敏感信息,因此服务不会将用户重定向到任意位置至关重要。
金三银四,相信最近很多人都在跳槽。那么面试题自然还是要看下的,在这我就把我手里收集到的面试题(朋友面试,网上收集等等)进行了汇总,希望可以帮到正在或者准备面试的你,同时我也可以自己在过一遍一般面试题 1.堆和栈的区别 1.内存管理范围 只有oc对象需要进行内存管理 非oc对象类型比如基本数据类型不需要进行内存管理 2.内存管理本质 因为:Objective-C的对象在内存中是以堆的方式分配空间的,并且堆内存是由你释放的,就是release OC对象存放于堆里面(堆内存要程序员手动回收) 非OC
小编最近参与了两个SDK测试项目,一个是与外部企业APP对接的SDK测试,对于要接入APP完全不了解,只针对SDK demo的功能和调用进行测试;另一个是与公司内部产品APP对接的SDK测试项目,是针对SDK与APP源码集成后进行测试,通过这两个项目,小编对SDK测试工作有了更深入认识,在此对SDK测试内容和测试方法进行总结分享给大家。
最近在MAUI项目中碰到了大文件下载方面的需求,要求可以实现显示下载进度、暂停、继续下载等,在开发过程中也是碰到了不少问题,所以在此简单分享使用MAUI在IOS上完成下载功能的经验,也希望大家少踩坑。文章中如有不妥的地方,也请多多指教。
Flutter 使用了一种全新的方法,您可以使用 widgets代替 Views 。Android 中的 View 主要是布局的一个元素,但在 Flutter 中,Widget 几乎就是一切。从按钮到布局结构的一切都是小部件。这里的优势在于可定制性。想象一下 Android 中的一个按钮。它具有文本等属性,可让您向按钮添加文本。但是 Flutter 中的按钮不是将标题作为字符串,而是另一个小部件。这意味着**在按钮内你可以有文本、图像、图标和几乎任何你可以想象的东西,**而不会打破布局限制。这也让您可以非常轻松地制作自定义小部件,而在 Android 中制作自定义视图是一件相当困难的事情。
在上一篇博客中详细的介绍了IOS开发中的相对布局和绝对布局,随着手机屏幕尺寸的改变,在App开发中为了适应不同尺寸的手机屏幕,用自动布局来完成我们想要实现的功能和效果显得尤为重要。本人更喜欢使用相对布局。在下面要学习的例子中暂且先用我们的StoryBoard来设置我们组件的约束,以后会在代码中给我们的元素新建约束。iPhone4,5和将要发布的iPhone6的屏幕的大小都不一样,所以屏幕的适配是我们搞App开发必须要考虑的问题。 我们要完成一个什么例子呢,先上两张程序运行最终的结果图,之后看着图提出
1. 起因 我们经常能够在第三方库的源码中看到很多loadView、willMoveToParentViewController:、viewDidLayoutSubviews 等等诸如此类的并不是十分常见的方法。这让永远都只在viewDidLoad写作的童鞋们情何以堪吶。 这些其实都和生命周期有关,和viewController以及view的各种加载顺序有关。这篇文章就小小撸一下这中间的关系和顺序。 2. Controller的生命周期 系统提供了控制器从显示到消失的四个方法。 千万不要看到方法名中间出现了
在前面的文章中我们讲了许多Flutter中的组件和Flutter中的特定操作,但是单单使用Flutter里的组件和方法是不够的。
介绍 分享下自己做内购遇到问题,总结出来的经验。 接入 使用RMStore。 1、使用RMStore的接入步骤 1、在Podfile内添加pod 'RMStore'并pod install; 2、实现并设置接口RMStoreReceiptVerificator; 3、在应用启动时调用接口 - (void)requestProducts:(NSSet*)identifiers success:(RMSKProductsRequestSuccessBlock)successBl
-需要在info.plist配置NSLocationWhenInUseUsageDescription字段;
前言 分享开发中遇到的问题,和相关的一些思考。 iOS11键盘问题 功能背景: 弹出键盘时,如果有输入框的话,需要输入框的位置跟随键盘大小而变动。 问题描述: 当快速切换键盘之后,容易出现输入框
ReplayKit是iOS自带的一个屏幕录制的框架,其支持应用程序对当前应用内页面进行录屏,并将最终的视频保存到系统相册中。ReplayKit在iOS 9之后引入,其接口简介,可以非常方便的为应用添加录屏功能。需要注意,在某些iOS 12系统上,开启录屏可能会失败(通常需要重启设备解决)。
线上突发一个Top1的crash告警,场景是UICollectionView在删除的时候触发。
功耗优化一直是 app 性能优化中让人头疼的问题,尤其是在直播这种用户观看时长特别久的场景。怎样能在不影响主体验的前提下,进一步优化微信iOS端视频号直播的功耗占用,本文给出了一个不太一样的答案。
iOS开发效率工具:完整SDK源码【封装富文本API,采用block实现链式编程】(block 的妙用:结合block和方法的优点实现iOS的链式编程)
WWDC21中发布的macOS Monterey中新增了可变刷新率的Adaptive-Sync显示技术,自此行业通用的可变帧率技术登录Mac生态;今天我们就围绕苹果生态中的两种可变帧率显示技术,讨论如何为用户呈现最佳体验;本文中首先我们会介绍一下macOS中的Adaptive-Sync技术;这项技术为macOS的全屏显示的App和游戏提供了更加灵活的帧率,更加流畅体验,基于此深入讨论有关顺滑渲染的最佳实践;然后我们会了解现有的iPad Pro和iPhone 13 Pro上的ProMotion技术,并进一步探讨能在不同帧率下基于CADisplayLink的最佳技术实践,在自定义绘图时为用户带来流畅的体验;本篇文章是基于Session10147 - Symbolication: Beyond the basics撰写,该Session的演讲者是来自Apple GPU软件团队的WindowServer工程师Kyle Sanner和CoreAnimation工程师 Alex Li。
经过完成这次的项目,我觉得其中最麻烦的就是自动续期订阅类型。因为其他几类都是一次性的内购类型,而只有自定续期订阅类是有连续性的,其中还有免费试用期、促销期的概念,用户还可以取消续订,恢复续订等。后台也需要有很多相应的逻辑操作。在这里总结一下完成自动续订订阅类型过程中遇到的问题和一些坑,希望帮助到大家。
2019 年苹果推出 苹果登录(Sign in with Apple)方式,要求 2020 年 4 月之后运行在 iOS13 及以上系统的 APP 如果使用第三方或社交登录服务(如 Facebook、谷歌、 Twitter、Linkedln 或亚马逊等),必须向用户提供 “以苹果账号登录” 服务的选项。其中苹果的审核细则 4.8 也明确的规定了这一点。
(JackJiang 使用的版本号如下图所示,为了方便直接引用工程,建议你也使用此版或较新版本)
1、线程创建需要的内存和时间消耗都比较大,因此建议你的入口点函数做相当数量的工作,或建立一个Run Loops允许进行经常性的工作。 2、Run Loops可以让你使用最小的资源来创建长时间运行线程。因为run loop在没有任何事件处理的时候会把它的线程置于休眠状态,它消除了消耗CPU周期轮询,并防止处理器本身进入休眠状态并节省电源。
前期准备工作:可以参考这篇博文http://www.jianshu.com/p/839dc30f2250 iOS版本只需要提供Bundle Id即可
领取专属 10元无门槛券
手把手带您无忧上云