• 當前位置:首頁 > IT技術 > 移動平臺 > 正文

    iOS基礎-專欄總目錄(持續更新)
    2021-08-08 17:38:06

    ?

    文章目錄

    • 引言
    • I、 上架指南
      • 1.1 iOS上架干貨匯總
      • 1.2 上架相關操作技巧
      • 1.3 iOS被拒絕的解決方案匯總
      • 1.4 系統框架(API)適配
    • II、 開發基礎知識
    • III、渲染
      • 3.1 動畫
      • 3.2 文字/圖像處理
        • 3.2.1 Quartz2D使用指南
    • IV、 網絡與數據存儲
      • 4.1 數據存儲
      • 4.2 數據搜索
      • 4.3 http/https/dns(數據提交)
      • 4.4 get 和PostBOOL參數進行處理
    • V、需求案例: 注冊/登陸基礎模塊
      • 5.1 支付產品的基礎知識
      • 5.2 登陸模塊
      • 5.3 注冊模塊
        • 5.3.1 《用戶協議及隱私政策》彈框
      • 5.4 處理用戶輸入內容
      • 5.5 地理信息處理
    • VI、 內存
      • 6.1 進程
        • 6.1.1 Extension的應用例子:語言播報
    • VII、質量(code review 、性能)
      • 7.1 測試
        • 7.1.1 技巧
        • 7.1.2 AB 測試流量切換方案
        • 7.1.3 iOS測試指南
      • 7.2 安全
      • 7.3 性能優化
      • 7.4 監控系統
    • VIII、 效率
    • see also
      • 技術分布

    ?

    引言

    歡迎大家來到#公眾號:iOS逆向的《iOS基礎》專欄

    本文列出學習大綱,同時也可作為大家學習《iOS基礎》專欄的索引。
    文中的藍字都是傳送門,點擊進入即可

    本專欄側重于程序開發和 iOS 開發的基礎知識和技能以及產品需求案例,當然也會包括提高項目質量和提升開發效率模塊。

    • 基礎涉及內容:app上架指南、語言、框架、內存、網絡、存儲、渲染、線程
    • 產品需求案例:

    1、普通的數據顯示案例,即網絡拉數據->存儲->讀取->展示;
    2、代理商CRM app、商戶收銀app
    3、計劃涉及的案例:瀏覽器內核,文字排版引擎,音視頻和圖像處理引擎,圖標繪制引擎

    • 質量

    1、測試/調試技巧(測試保證質量是一個很重要的環節):黑盒測試、單元測試、自動化測試
    2、性能優化:網絡/存儲/內存/渲染/算法優化
    3、監控體系:卡頓監控、數據庫監控、流量消耗監控、內存消耗監控、耗時監控(問題響應)
    4、代碼管理:代碼規范/代碼規范檢測工具、code review 機制(互相監督,減少臟亂差代碼)
    5、應用安全:敏感信息的脫敏規范、網絡傳輸的安全、敏感信息安全(用戶名/密碼)、代碼混淆【iOS應用逆向與安全模塊請移步到《iOS逆向》專欄學習】

    I、 上架指南

    1.1 iOS上架干貨匯總

    • iOS上架前的準備、上架技巧(不更新版本的情況下刪除App Store非主語言的方法)、常見上架問題及解決方案(上傳ipa包被吃掉、已上架app在AppStore搜不到)、app上架后的事項(ASO)

    • iOS代碼管理之【Xcode Build版本號自增的解決方案】(通過配置腳本讓xcode 在每次Build打包時自動對CFBundleVersion加一)

    • 【codesign】1、重簽名2、搜索本機的證書、查看簽名證書、3、打包腳本

    1.2 上架相關操作技巧

    【AppStore 上架相關技巧】1、由于AppStore緩存原因,導致已上架iOS app(可供銷售)在AppStore上搜不到的解決方案2、不更新版本的情況下刪除App Store非主語言的方法(應用場景:馬甲包)

    1.3 iOS被拒絕的解決方案匯總

    iOS被拒絕的解決方案匯總:1、因藍牙功能隱蔽而導致上架2、iOS審核1.1.6被拒(安全-令人反感的內容)

    1.4 系統框架(API)適配

    • iOS基礎-專欄目錄指南之【系統適配】(持續更新)
    II、 開發基礎知識

    涉及框架:StoreKit / MessageUI / AVFoundation/Foundation/UIKit

    III、渲染

    3.1 動畫

    • iOS常用動畫 【 定點縮放彈窗】利用錨點anchorPoint進行實現

    iOS基礎-專欄總目錄(持續更新)_iOS基礎模塊

    iOS基礎-專欄總目錄(持續更新)_上架指南_02

    • iOS Horizontal Popup View 【 橫向(水平方向)彈出菜單視圖】例子:商品列表支持彈出菜單進行下/上架商品、打印商品價簽、編輯商品信息、同步網店等操作popover

    iOS基礎-專欄總目錄(持續更新)_iOS數據搜索_03

    3.2 文字/圖像處理

    • 渲染機制

    圖層混合,渲染時機,離屏渲染

    • iOS 圖片的平鋪和拉伸、圖片的加載方式、內容模式(等比例顯示)

    3.2.1 Quartz2D使用指南

    • Quartz2D使用指南:自定義控件(電子簽名)、圖片水印、裁剪以及屏幕截圖

    • iOS Quartz2D使用教程之【自定義控件】(案例:橫屏電子簽名)

    • 電子簽名

    IV、 網絡與數據存儲

    app從拉取數據到顯示的大致流程:

    從網絡拉取數據
    存儲到本地文件系統
    再從本地取出來放進內存,最后渲染出來。

    從流程就可以看出本模塊講解的內容大綱如下:

    • 數據存儲
    • https 的原理
    • dns 劫持(重試機制)
    • 優化弱網絡下的連接(離線機制)
    • 客戶端跟后臺的通信協議

    數據結構json /protobuf、數據的增量更新

    • 線程

    這里所有的處理都在操作系統的進程和線程中執行,因此了解線程相關知識是必不可少的

    4.1 數據存儲

    • 主鍵索引事務等數據庫基本概念
    • 存儲機制/索引的實現/sqlite的七層結構
    • 單文件存儲

    XML存文件;對象序列化成二進制存儲

    • iOS app 使用BGFMDB存儲信息到本地數據庫教程【應用場景:商戶首次登陸app同意協議流程,記錄當前商戶已經同意過協議信息】

    • 【iOS 使用數據庫表存儲信息】例子: 存儲顯示過廣告彈窗的用戶ID, 應用場景:首次打開app進行廣告彈窗

    • PL/SQL基礎

    4.2 數據搜索

    • iOS數據搜索技巧:1、 應用NSPredicate進行數據篩選:從數組搜索特定條件的元素(從數組中篩選type=8的電子簽名數據,避免遍歷數組 certificateInfoList)2、正則表達式

    4.3 http/https/dns(數據提交)

    • iOS 實現json數據提交(發送JSON數據給服務器)

    1.一定要使用POST請求
    2.設置請求頭 [request setValue:@“application/json” forHTTPHeaderField:@“Content-Type”];
    3.設置JSON數據為請求體

    • iOS接收json格式【 unacceptable content-type: text/plain的解決方案】
    • iOS實現key=value&key=value形式的數據提交【Post 提交請求數據格式為application/x-www-form-urlencoded的方案】(基于AFNetworkSDK)

    4.4 get 和PostBOOL參數進行處理

    【AFN使用NSNumber 傳BOOL值參數時,需要區分get 和Post進行處理】get請求對應的0和1,post對應true/false:若服務端Bool 參數沒有同時支持這兩種格式,就需要處理

    ?

    V、需求案例: 注冊/登陸基礎模塊

    5.1 支付產品的基礎知識

    • i1、支付知識及調試測試技巧:【支付流程 & 預授權& 銀行卡驗證&反洗錢】2、安全設計Checklist(短信驗證碼、圖形驗證碼、密碼管理、身份驗證、會話安全、敏感信息、接口安全)

    5.2 登陸模塊

    • iOS 優化登錄流程:【打開app,如果 token不過期,就使用最近一次登錄的tokenn進行接口請求?!績灮痶oken的存儲方式:(之前只是存儲在內存,每次打開app都會重新登錄,)

    5.3 注冊模塊

    5.3.1 《用戶協議及隱私政策》彈框

    • iOS TextViewHyperLink 文字超鏈接: 《用戶協議及隱私政策》彈框

    iOS基礎-專欄總目錄(持續更新)_iOS基礎模塊_04

    5.4 處理用戶輸入內容

    • iOS文本長度計算【中文占1,英文等能轉ascii的占0.5】常常應用于對文本輸入框的個數限制

    • iOS處理語言的強大工具CFStringTransform : 智能地處理用戶的輸入內容,經典應用場景【索引】

    • iOS用戶輸入處理之【從字符串中提取數字(手機號)】應用場景:登錄界面“請輸入手機號“文本框,對粘貼內容進行手機號碼提取

    • iOS金額的格式轉化處理

    5.5 地理信息處理

    • iOS定位、地理/逆地理編碼geocodes的使用、判斷目標經緯度是否在大陸
    VI、 內存
    • ARC 機制

    OC 的引用計數 、自動釋放池、Java語言的垃圾回收機制

    • 內存管理

    避免內存泄露

    • 緩存管理

    避免緩存太多導致OOM、緩存命中率太低性能低下
    Out Of Memory:“內存用完了”。 它來源于java.lang.OutOfMemoryError。

    • 線程和進程

    iOS 開發只在做 Extension 時才需要考慮到進程,
    主線程子線程,多線程并發鎖競爭,死鎖,GCD,Runloop

    6.1 進程

    6.1.1 Extension的應用例子:語言播報

    • NotificationServiceExtension

    使用 NotificationServiceExtension實現VoiceBroadcast
    【app處于后臺/被殺死的狀態仍可進行語言播報】
    iOS12.1以上在后臺或者被殺死無法語音播報的解決方案

    VII、質量(code review 、性能)

    7.1 測試

    7.1.1 技巧

    • iOS測試位置信息變更:通過GPX文件修改經緯度信息(模擬iOS設備的位置)

    7.1.2 AB 測試流量切換方案

    • AB 測試流量切換方案

    7.1.3 iOS測試指南

    iOS測試指南之 【保存接口返回的數據為json,以便作為測試數據】

    7.2 安全

    【iOS應用逆向與安全模塊請移步到《iOS逆向》專欄學習】

    【敏感信息的脫敏規范】(數據類型包括日志相關、賬戶訂單、個人信息、賬戶認證、持卡數據)

    7.3 性能優化

    1、 檢測各方面的數據,量化運行性能,
    2、從檢測數據尋找性能瓶頸
    3、找解決方案并用監測的數據驗證優化效果

    7.4 監控系統

    【電池的狀態處理:電池狀態獲取及監測、電池電量獲取及監測、低電量模式切換監測】

    VIII、 效率

    效率教程模塊放在了 《iOS進階》專欄

    see also
    • 客戶端開發

    主要是指iOS/Android,也包括macOS/Windows/Linux這些平臺的軟件開發

    前端開發

    使用vue/react這些來源于瀏覽器技術

    • Native開發

    是指“非瀏覽器技術”開發,例如不使用JavaScript開發。
    通常Native開發,使用的語言主要是編譯型,而不是解釋型。
    例如iOS/macOS使用Objective C和Swift來開發,Android使用Java或Kotlin來開發。Windows使用C#來開發,Linux使用C++來開發。(C++所有平臺都能開發)。
    Flutter使用Dart

    技術分布

    • 完全小程序實現

    這些應用一般是業務為主,連接線下的應用

    • ReactNative或者Flutter實現為主,少量Native代碼為輔助。

    中小公司開發的業務類型為主的應用,更多是ToB產品。為了節省開發人力,大部分功能使用跨端技術開發。

    • 自定義DSL框架。

    用xml或者json描述界面,Native代碼來根據xml或json生成對應的界面。
    這些應用多數是大型的應用,多數以Feed流為主,DSL框架用來實現某一個“內容為主”的功能。
    例如美團首頁、微博首頁(刷微博時經??吹降膹V告)、支付寶首頁。
    這些Feed流中的內容十分豐富,公司內部也會開發專有的運營平臺,能很方便的配置下發不同的內容。
    美團的MTFlexbox發布過文章,但不開源。阿里的Tangram(開源)。

    • 更高級的DSL框架。

    例如滴滴的變色龍 https://github.com/didi/chameleon ,
    或者最近阿里開源的北海 https://github.com/openkraken/kraken 。這些框架可以使用前端技術,開發出適應多平臺的代碼。

    • Native為主,其他技術為輔助。

    核心功能對性能有更高的要求,必須使用Native技術來開發。
    例如微信、淘寶、抖音
    這些應用的核心功能使用Native開發,跨端技術、小程序、自定義DSL框架都在其中某個場景中發揮各自的優勢。
    此外,一些小而美的應用多數具有某些平臺的創新特性,很多需要使用到平臺獨有的能力。

    iOS基礎-專欄總目錄(持續更新)_數據_05

    ?

    本文摘自 :https://blog.51cto.com/i

    開通會員,享受整站包年服務
    国产呦精品一区二区三区网站|久久www免费人咸|精品无码人妻一区二区|久99久热只有精品国产15|中文字幕亚洲无线码