混合開發實戰:App里拉起一個小程式(IOS篇)
最近和同事們討論的最多的技術架構就是 「Native+小程式」,作為混合開發的一種新模式,確實有非常多的優勢。一方面,小程式天然具備跨平臺能力,一套程式碼可以在 iOS 與 Android 兩個平臺中執行,其次小程式有遠超過 H5 的體驗(支援本地快取,Webview,有豐富的元件與支援庫),同時還支援熱更新,也可以避免 DOM 洩露,業務功能用小程式的形式去改造也不會影響APP安裝包體積。
要實現這個架構最基本的就是要能在App 里拉起小程式,我司是用的FinClip 小程式容器,本期給大家分享實操經驗。先從原理開始吧。
什麼是小程式執行時框架?
FinClip 的小程式程式設計模型是分為多個頁面,每個頁面有自己的 template、CSS 和 JS,實際在執行的時候,業務邏輯的 JS 程式碼是執行在獨立的 JavaScript 引擎中,每個頁面的 template 和 CSS 是執行在各自獨立的 WebView 裡面,頁面之間是透過函式 NavigateTo 進行頁面的切換。
每個 WebView 裡面的頁面和公共的 JavaScript 引擎裡面的邏輯的互動方式是透過訊息服務,頁面的一些事件都會透過這個訊息通道傳給 JavaScript 引擎執行環境,這個執行環境會響應這個事件,做一些 API 呼叫,可調到客戶端凡泰小程式提供的一些能力,處理之後會把這個資料再重新傳送給對應的頁面渲染容器來處理,把資料和模板結合在一起來,在產生最終的使用者介面。如下圖:
如何在App里拉起小程式?
以下操作均是使用 FinClip 小程式容器去實現的。也是新技術,不瞭解的可以去官網看看:
iOS端操作如下:
第一步:獲取 SDK KEY 及 SDK SECRET
使用FinClip SDK需要申請 SDK KEY 及 SDK SECRET ,只有在SDK初始化的時候配置了正確的 SDK KEY 及 SDK SECRET ,才能初始化成功並正常使用。
1.1 建立應用
需要登入FinClip管理後臺「應用管理-新增合作應用」,完成應用建立;
1.2 獲取 SDK KEY 及 SDK SECRET
建立應用並新增 Bundle ID後,選擇對應 Bundle ID 後的「複製」,就可以匯出對應的 SDK KEY 與 SDK SECRET了。
SDK KEY:是合作應用能使用小程式SDK的憑證,如果SDK Key校驗失敗,則SDK的所有Api都無法使用。
SDK SECERT:是訪問服務的安全證照,不要給第三方。
第二步:整合 SDK
整合sdk需要來引入 FinApplet.framework 和FinAppletExt.framework。具體操作方法可以去詳細檢視官方的的文件: iOS如何引入一個SDK
第三步:新增SDK標頭檔案
在需要使用 FinClip 小程式 SDK 的地方,新增如下程式碼:
#import <FinApplet/FinApplet.h>
如果還整合了擴充套件 SDK,那麼呼叫擴充套件 SDK 中的 api,還需要加上下面的程式碼:
#import <FinAppletExt/FinAppletExt.h>
當然,最方便的方式是在 pch 檔案中新增以上程式碼,這樣在使用的地方就不用再引用了。
第四步:初始化 SDK
FATConfig *config = [FATConfig configWithAppSecret:@"SDK KEY" appKey:@"SDK SECRET"];
config.apiServer = @"
[[FATClient sharedClient] initWithConfig:config error:nil];
第五步:開啟小程式
[[FATClient sharedClient] startRemoteApplet:@"app id" startParams:nil InParentViewController:self completion:^(BOOL result, NSError *error) {
NSLog(@"result:%d---error:%@", result, error);
}];
官方也有一些例項demo,可以到他們的 小程式應用市場: 裡去找程式碼包下載。大家可以自行下載
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70017183/viewspace-2888957/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何在App里拉起一個小程式?(IOS篇)APPiOS
- Flutter混合開發—iOS篇FlutteriOS
- Flutter 生成執行小程式的混合App開發實踐FlutterAPP
- React Native iOS混合開發實戰教程React NativeiOS
- iOS混合開發庫(GICXMLLayout)五、Texture篇iOSXML
- iOS混合開發庫(GICXMLLayout)七、JavaScript篇iOSXMLJavaScript
- 手牽手,使用uni-app從零開發一款視訊小程式 (系列下 開發實戰篇)APP
- iOS開發-第一個AppiOSAPP
- Flutter、iOS混合開發實踐FlutteriOS
- Flutter混合App實戰FlutterAPP
- Flutter完整開發實戰詳解(十四、混合開發打包 Android 篇)FlutterAndroid
- Flutter 和iOS 混合開發(一)FlutteriOS
- 實戰:雲開發·實現奶茶店小程式(一)
- Taro + 小程式雲開發實戰
- iOS整合 Flutter 混合工程開發一iOSFlutter
- 輕鬆教你React Native 混合開發(iOS篇)React NativeiOS
- 如何快速的開發一個完整的iOS直播app(原理篇)iOSAPP
- Flutter混合開發-iOSFlutteriOS
- Appium iOS 測試指令碼開發實戰APPiOS指令碼
- iOS原生混合RN開發最佳實踐iOS
- iOS 開發(一) 程式碼規範篇iOS
- 小程式·雲開發實戰 - 迷你微博
- 小程式雲開發專案實戰
- 雲原生微信小程式開發實戰微信小程式
- iOS混合開發庫(GICXMLLayout)一、介紹iOSXML
- iOS開發小記-基礎篇iOS
- Xamarin iOS開發實戰第1章使用C#編寫第一個iOS應用程式iOSC#
- 直播類 APP 專案開發實戰(原理篇)APP
- iOS BLE 開發小記[3] 如何實現一個 Local PeripheraliOS
- 實戰·使用taro+雲開發快速開發小程式
- 開發一個題庫系統App和小程式的心得APP
- mpvue實戰開發美團外賣小程式Vue
- uni-app 混合開發APP
- Hybrid 混合App開發APP
- Flutter 混合開發實戰問題記錄(一)FlutterView閃爍FlutterView
- iOS開發UI篇--使用UICollectionView實現一個傾斜列表效果iOSUIView
- iOS BLE 開發小記[2] 如何實現一個 Local CentraliOS
- 「小程式JAVA實戰」小程式的影片點贊功能開發(62)Java