IOS
快来分享你的内容吧~
- 2024-12-12·后端虽然 AI 也没普及几年,但很多人已经对人工智能产生了深度依赖。查看全文lenyan:友友们,话说官方ChatGPT真的好用吗,可我通常都用国内的。只是懒的开梯子用,还是有什么使用技巧?👻1690分享
2024-12-04·产品经理- 2022-12-26
- 2022-12-26
- 2022-12-26
APP 上架的临门一脚,差点没迈过去!!
大家好,我是多喝热水。 最近在开发编程导航APP,大家有什么优化点都可以给我提,没有下载体验的可以[下载](https://codefather.cn/post/app)一波! 解答一下大家问的比较多的问题,编程导航 APP 是 Flutter 开发的,大家对开发 APP 感兴趣可以关注一下,后续会持续分享一些 Flutter 专栏内容。 ## 正文 最近 APP 的功能已经做的差不多了,现在正在陆续上架到各大应用商店。当我以为功能开发完了就万事大吉了,其实还有几个大雷等着我踩! <img src="https://pic.code-nav.cn/post_picture/1732240055109545986/f4wfaYRnOHeDyLGS.webp" alt="" width="100%" /> 为什么这么说,因为相关部门对 APP 的隐私问题看的非常重,为了防止一些应用违法过度收集用户信息,在用户未同意 APP 的**隐私政策/用户协议**的情况下不允许收集用户信息。 相信大家在第一次下载 APP 打开的时候,都会需要你授权同意它的隐私政策/用户协议才能让你继续使用。哥们以前还嫌它烦,寻思这玩意有啥用呢,我不同意你就不会获取我的信息了吗?谁信啊,在互联网冲浪谁不是裸奔的。 <img src="https://pic.code-nav.cn/post_picture/1732240055109545986/9zhs7L5ZheBVgxbL.webp" alt="" width="215px" /> 但这事轮到自己头上来才知道,不是别人想加,而是相关部门规定必须加。不过往好处想,也确实能起到一点对用户个人信息保护的作用。但这玩意对开发者来说是真头大。 比如我们在启动应用的时候如果获取了用户设备信息,那不好意思,直接就是:“不通过”。哥们现在看到这三个字都PTSD了。 再者,就是你的代码里没写相关的代码,但是使用的 SDK 获取了。 最难受的来了,我们需要提交的应用市场非常多(每个应用市场需要的材料可能都不一样),第一次提交的时候没意识到隐私合规的重要性,提交的应用市场全部打回,哥们天塌了,又要重新上传。 <img src="https://pic.code-nav.cn/post_picture/1732240055109545986/6J2dKwseonq13C2u.png" alt="" width="225px" /> 后面谨慎一点,先审核一个商店,通过后再处理其他的应用商店,给大家看看我的审核战绩,在经过了 6 次被打回后,终于迎来了曙光: <img src="https://pic.code-nav.cn/post_picture/1732240055109545986/1B6Nd9QnJPoGU4UJ.webp" alt="" width="100%" /> ## 经验 这里分享一些经验(**都很关键**): 1)首先就是需要在隐私政策协议中公示 APP 用到的所有 SDK,描述它们会收集哪些信息,收集这些信息的目的 2)一定要在用户同意隐私政策协议之后才去初始化 SDK 接着我们可以先选一个比较容易审核通过的平台,咱们先上架再说。比较推荐小米,首先是它需要填写的资料不是很多,而且审核效率也很快,客服小姐姐的响应也很及时,审核通过后还能直接同步其他应用商店。 <img src="https://pic.code-nav.cn/post_picture/1732240055109545986/poSrRPNw78fy8BrR.webp" alt="" width="100%" /> 审核不通过的情况我们可以去下载对应的审核日志,如下: <img src="https://pic.code-nav.cn/post_picture/1732240055109545986/QEh37vJFvnFstEYB.webp" alt="" width="100%" /> 在日志里可以看到具体的调用堆栈,根据这些信息可以大致定位到我们的代码,如果是自己代码中的问题,根据调用堆栈日志,大概率可以解决,如下: <img src="https://pic.code-nav.cn/post_picture/1732240055109545986/buynTxrzTmjCJO8G.webp" alt="" width="100%" /> 另外,也可以看到哪些 SDK 在用户没有同意隐私政策之前就触发了收集用户信息的行为,然后去官方文档找找解决方案,没有的话那只能提工单了。 最后,在你改完已知问题之后也可能会出现一些小惊喜(出现一些新的需要整改的点)。 好了,这篇文章就分享到这里,哥们该去看看审核通过没了。 ## 往期文章 [📚 Flutter & H5页面混合开发指北 ](https://www.codefather.cn/post/1864199174536527873) [🤡 因为编辑器没做草稿,老板崩溃了。。。](https://www.codefather.cn/post/1840222330227068929)
ChatGPT 崩了!我的天塌了
大家好,我是程序员鱼皮。 今天早上,我充满干劲准备开始一天的工作,熟练地打开 ChatGPT。结果没想到,ChatGPT 竟然崩了! <p align="center"><img src="https://pic.code-nav.cn/post_picture/1601072287388278786/FtafMpSKgD7lBuSW.webp" alt="image.png" width="100%" /></p> 我去,天塌了?没了 AI,还怎么工作啊! <p align="center"><img src="https://pic.code-nav.cn/post_picture/1601072287388278786/eqEYyl1Ro2fDuIhC.webp" alt="企业微信截图_01749baf-75f5-41ac-8f3c-b62ed7566187.png" width="172px" /></p> 随后 OpenAI 证实了 ChatGPT 正经历全球范围的宕机,导致用户无法使用。这一问题也影响了 iOS 18.2 与 Siri 的集成功能。Sora 及 API 也处于瘫痪状态。 事故报告表示,已查明宕机原因,正努力以最快速度恢复正常服务,并对宕机表示歉意。 据反馈,此次 ChatGPT 宕机了四个多小时。目前使用已经恢复正常。 <p align="center"><img src="https://pic.code-nav.cn/post_picture/1601072287388278786/1Y6SQ6q08Ylwjmhf.webp" alt="image.png" width="100%" /></p> 有小道消息称这次宕机是由于机房着火引起的。这也是服务出现故障常见的小道消息了。 <p align="center"><img src="https://pic.code-nav.cn/post_picture/1601072287388278786/bb1sfwJD7IbmCYjE.webp" alt="image.png" width="100%" /></p> 真正的具体原因还要看后续 OpenAI 的事故报告,不过我总感觉没那么简单。。。 昨天苹果刚发布 iOS 18.2,宣布整合 ChatGPT 与 Siri 功能。再往前一天,OpenAI 宣布正式向用户开放 AI 视频生成模型 Sora。然后今天 ChatGPT 就崩给你看? <p align="center"><img src="https://pic.code-nav.cn/post_picture/1601072287388278786/VsCssiWlgdlqYN9b.png" alt="image.png" width="170px" /></p> 从 12 月 5 日开始,OpenAI 进行了为期 12 天的 AI 发布会,每天都会通过直播形式展示新技术或产品。Day 1 刚刚上线了 ChatGPT o1 正式版和 ChatGPT Pro。这次发布会原本可以是一场对公司新的营销宣传,GPT 这一崩,大家的注意力全都被带歪了。 不知道今天 OpenAI 的直播发布会,会不会对此说明,并更改直播计划。 --- 多说两句,随着 AI 技术的发展,ChatGPT 之类的 AI 产品已经在工作和生活中被广泛使用。 而 GPT 作为 AI 产品的领头羊,这一宕机,直接导致 OpenAI 的多个服务无法使用,包括其官方网站、移动应用等。最近又临近期末周,GPT 一崩,学生党遍地哀嚎;打工人也没好多少,有人用 GPT 辅助工作,有些使用了 OpenAI 服务,全都停摆,被迫回归最传统的工作学习模式。 虽然这次的事故很短暂,但也带给了我一段回到了原始时代的体验。 虽然 AI 也没普及几年,但很多人已经对人工智能产生了深度依赖,正如我刷到的一个帖子表示:AI 崩了,这才是真正的人类一败涂地。 <p align="center"><img src="https://pic.code-nav.cn/post_picture/1601072287388278786/LYvMMXW9MJkQqN2x.png" alt="image.png" width="100%" /></p> ## 更多 💻 编程学习交流:[编程导航](https://www.codefather.cn/) 📃 简历快速制作:[老鱼简历](https://laoyujianli.com) ✏️ 面试刷题神器:[面试鸭](https://mianshiya.com)
Flutter & H5页面混合开发指北
大家好,我是多喝热水。 最近在写 Flutter,简单聊一聊在 Flutter 中如何去集成**H5页面**,读完这篇文章你可以了解以下内容: 1)如何在 Flutter 中加载 H5? 2)Flutter 和 H5 如何进行通信? ## 前言 要在 Flutter 中混入 H5 页面,首先我们需要一个 webview 来加载这个 H5,这里需要用到 [flutter_inappwebview(https://pub.dev/packages/flutter_inappwebview)](https://pub.dev/packages/flutter_inappwebview) 依赖,这个算是 Flutter 中比较优质的三方 webview 库了,功能比较全面: <img src="https://pic.code-nav.cn/post_picture/1732240055109545986/UuImNSw5trrNuPxK.webp" alt="" width="100%" /> ## 使用场景 什么场景下用 webview 性价比最高?说说我的看法: 1)经常会需要变动的页面,比如活动页,H5 有天然的热更新优势 2)不存在大量的逻辑交互,且已经有一套现成的 H5 页面,可以直接套用,避免重复造轮子 ## 实战案例 比如编程导航的[**网页端会员页面**](https://www.codefather.cn/vip)已经适配了移动端,那我们其实没有必要重新写一套,直接拿过来就能用了,只需要解决 Flutter 和 H5 之间的通信问题即可: <img src="https://pic.code-nav.cn/post_picture/1732240055109545986/mVaXXF635EookaGq.webp" alt="undefined" width="312" /> 所以总结一下,我们需要做以下几件事情: 1)安装 flutter_inappwebview 2)加载 webview 3)在 webview 中种上 Cookie(如果有的话) 4)Flutter 与 H5 通信的事件绑定(H5发射事件,flutter监听事件) ### 安装 flutter_inappwebview ```bash flutter pub add flutter_inappwebview ``` ### 加载 webview 这里我们主要关注的点是 `onWebViewCreated` 这个钩子,因为在 webview 创建完成后就可以对事件进行监听(监听来自 H5 发射的事件) ```dart InAppWebView( initialUrlRequest: URLRequest(url: WebUri("https://codefather.cn/vip")), onWebViewCreated: onWebViewCreated, ) ``` ### Cookie 种植 1)我们需要拿到 App 中的 Cookie( token 同理),然后给指定地址种植上,这里我们会用到 `CookieManager` 来种植 Cookie,如下: ```dart // 在 onWebViewCreated 钩子中调用 void onWebViewCreated(InAppWebViewController controller) { setCookies(); } setCookies() { // 1. 实例化 final CookieManager cookieManager = CookieManager.instance(); // 2. 获取 App 中的所有 cookie final cookies = getCookies(); cookies.forEach((key, value) async { await cookieManager.setCookie( url: WebUri("https://codefather.cn/vip"), name: key, value: value, domain: Global.cookieDomain, path: "/api", isSecure: true, maxAge: 3600, ); }) } ``` ### 事件监听(来自H5) 这里我们以开通会员按钮举例,预期是点击开通会员,弹出`"我要开通会员!!!`的提示。 1)Flutter端的监听代码如下 ```dart void onWebViewCreated(InAppWebViewController controller) { // 1. Cookie设置 setCookies(); // 2. 加入会员按钮点击监听 onJoinVip(); } void onJoinVip() { _controller?.addJavaScriptHandler( handlerName: "joinVipHandler", // 监听加入会员事件 callback: (arguments) { showToast("我要开通会员!!!"); }, ); } ``` 2)H5端的代码如下 > 通过 flutter_inappwebview 加载的网页我们可以拿到 flutter_inappwebview 对象,那么我们可以对 window.flutter_inappwebview 做判断,如果它存在我们就认为它是在 flutter 端加载的网页,如果为空,则是走的正常的网页加载,伪代码如下: ```js function h5JoinVip() { if (window.flutter_inappwebview) { // 发射一个加入会员的事件,让flutter去处理这个支付请求 window.flutter_inappwebview.callHandler('joinVipHandler'); } else { H5pay(); // 走h5的支付 } } ``` ## 效果展示 效果已经有了,剩下的就是在 Flutter 中去处理支付流程(但这不是本篇文章的重点): <img src="https://pic.code-nav.cn/migrate_image/ed625eaea89455b0ef180b6aa194b757.gif" alt="效果演示" width="244px" /> 感兴趣的小伙伴可以自己尝试一下,最近会开一个 **Flutter 专栏**,写一些 Flutter 相关的文章,感兴趣的小伙伴可以关注一波,也欢迎关注我的公众号「程序员热水」,我会分享一些前端相关的知识碎片。 --- **往期文章**: - [因为编辑器没做草稿,老板崩溃了。。。](https://www.codefather.cn/post/1840222330227068929) - [这样设计弹框,有更多时间来摸鱼了!](https://www.codefather.cn/post/1818122376005369858) - [👉🏻 更多...](https://www.codefather.cn/user/1732240055109545986/post)
《Beginning iOS Programming with Swift and SwiftUI》
地址:https://pan.baidu.com/s/1D0Tk42U5V41FenBMzV8bzw?pwd=8xnp
《iOS 15 Programming for Beginners》
地址:https://pan.baidu.com/s/1eDhmmUkDh95LbZVm6rHpDw?pwd=aqg0
douyin-ios-objectc
地址:https://github.com/sshiqiao/douyin-ios-objectc
MacWk
mac软件下载 地址:https://www.macwk.com/
youtube-iOS
地址:https://github.com/aslanyanhaik/youtube-iOS
CodeEdit
地址:https://github.com/CodeEditApp/CodeEdit
《Beginning iOS Programming with Swift and SwiftUI》
提取码: u7r8 地址:https://pan.baidu.com/s/1tE5rirr04whF5R7JVajCpA?pwd=u7r8
