日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【转】学习apicloud和IOS之间的模块化使用

發(fā)布時間:2023/12/4 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【转】学习apicloud和IOS之间的模块化使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

最近公司有使用APICloud發(fā)開的需求,需要我這邊提供一些模塊包得封裝。因為沒有也是剛接觸APICloud,所以也就在看官方文檔?。下面講一講我再使用過程中得一點點東西。

? 首先,下載官方SDK,下載最新版本的模塊開發(fā)SDK,找到里面的ModulesDevProject_iOS.zip,這里面包含ModuleDemo、ModulesDevProject和說明文件。ModuleDemo是一個官方的模塊包封裝和靜態(tài)庫生成的工程。ModulesDevProject則是可以讓我們自己調(diào)試的工程。

?

模塊類實現(xiàn)

2.1. 新建模塊類

?

新建一個UZModuleDemo類,繼承于UZModule類,其中UZModule類為模塊的基類。模塊開發(fā)過程中文件命名時提倡加前綴,以避免和其它模塊沖突。

2.2. 模塊生命周期

當前端js中調(diào)用模塊方法時,模塊首先會被初始化,引擎會調(diào)用其 - (id)initWithUZWebView:(UZWebView *)webView 方法;

當模塊所在的頁面被銷毀時,引擎會調(diào)用其 - (void)dispose 方法。

2.3. 啟動方法

如果模塊需要在應用啟動的時候就執(zhí)行一些操作,那么首先得在module.json里面配置launchClassMethod,例如配置的方法為launch,然后在模塊里面實現(xiàn)該方法,當應用啟動時該方法就會被執(zhí)行。

?

[objc]?view plaincopy
  • +?(void)launch{??
  • ?//在module.json里面配置的launchClassMethod,必須為類方法,引擎會在應用啟動時調(diào)用配置的方法,模塊可以在其中做一些初始化操作;下面代碼為注冊一個實現(xiàn)了UIApplicationDelegate協(xié)議方法的對象,該對象中方法就會在需要的時候被調(diào)用,通過此方式可以實現(xiàn)第三方應用回調(diào)url解析、推送等常用功能??
  • ?//UZApphandler?基礎(chǔ)Object基類?可以做一些需要AppDelegate?實現(xiàn)的初始化?如初始化推送的AppKey等等??
  • ???//?UZAppHandler?*appHandler?=?[[UZAppHandler?alloc]?init];??
  • ???//?[theApp?addAppHandle:appHandler];??
  • ??
  • }??


  • ?

    2.4. 方法調(diào)用

    實現(xiàn) - (void)showAlert:(NSDictionary *)paramDict 方法,用于顯示一個對話框,該方法需要在module.json里面配置,然后在前端js里面才可以調(diào)用該方法。

    如果前端調(diào)用該方法時傳入了一個function,那么在這里可以通過cbId字段獲取該function對應的id,然后在需要的時候把數(shù)據(jù)通過該function回調(diào)給js。

    ?

    [objc]?view plaincopy
  • -?(void)showAlert:(NSDictionary?*)paramDict?{??
  • ????_cbId?=?[paramDict?integerValueForKey:@"cbId"?defaultValue:-1];??
  • ????NSString?*message?=?[paramDict?stringValueForKey:@"msg"?defaultValue:nil];??
  • ????UIAlertView?*alert?=?[[UIAlertView?alloc]?initWithTitle:nil?message:message?delegate:self?cancelButtonTitle:@"取消"?otherButtonTitles:@"確定",?nil?nil];??
  • ????[alert?show];??
  • }??
  • ?

    ?

    2.5. 回調(diào)

    ?

    我們在這里實現(xiàn)UIAlertViewDelegate中的 - (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex 方法,將用戶點擊的按鈕index回調(diào)給js端,代碼如下:

    [objc]?view plaincopy
  • -?(void)alertView:(UIAlertView?*)alertView?didDismissWithButtonIndex:(NSInteger)buttonIndex?{??
  • ????if?(_cbId?>=?0)?{??
  • ????????NSDictionary?*ret?=?@{@"index":@(buttonIndex)};??
  • ????????[self?sendResultEventWithCallbackId:_cbId?dataDict:ret?errDict:nil?doDelete:YES];??
  • ????}??
  • }??

  • 當然,也可以定義自己的方法method,同時要修改module.json的配置 注意不要[+]以及引號的英 漢。

    [objc]?view plaincopy
  • {??
  • ????"name":"moduleDemo",//模塊包名一致??
  • ????"class":"UZModuleDemo",//模塊類名??
  • ????"methods":["showAlert","method"],//自己定義的方法名??
  • ????"launchClassMethod":"launch"//是否執(zhí)行l(wèi)aunc類方法??
  • }??
  • 找到widget目錄下html目錄里面的module-con.html,我們在這里面調(diào)用showAlert等方法,如下

    ?

    [objc]?view plaincopy
  • var?param?=?{??
  • ????msg:"Hello?App!"??
  • };??
  • var?demo?=?api.require('moduleDemo');//模塊包名稱?(module.json?這里?模塊包名稱?三者要一致)??
  • demo.showAlert(param,?callBack);//傳參數(shù)調(diào)用方法?和回調(diào)??
  • ??
  • function?callBack(ret,?err){??
  • ????var?msg;??
  • ????if?(ret.index?==?0){??
  • ????????msg?=?"點擊了第一個按鈕";??
  • ????}?else?{??
  • ????????msg?=?"點擊了第二個按鈕";??
  • ????}??
  • ????api.toast({??
  • ????????msg:msg??
  • ????});??
  • }??

  • 調(diào)試好了之后,把添加 修改的文件 加入ModuleDemo的靜態(tài)庫工程(也可以自己創(chuàng)建),去掉沒用的,選擇iOS device編譯,復制靜態(tài)庫文件。 創(chuàng)建文件夾名稱和模塊包一致,里面在創(chuàng)建target文件夾,把靜態(tài)庫文件粘貼進來,加入用到了第三方的Framework和bundle束也放進來。 target同級目錄粘貼module.json文件,返回壓縮成zip文件. 獲取在apicloud創(chuàng)建的應用的Id 修改widget下config.xml 頂部的id,復制壓縮widget文件。在apicloud控制臺,轉(zhuǎn)到該應用,選擇代碼部分,上傳widget.zip 跳轉(zhuǎn)模塊中自定義模塊上傳模塊包,名稱必須和模塊包名稱一致。保存 編譯,如果沒有意外,你就能掃二維碼 下載安裝你的應用到手機了。 這里默認的時apicloud提供的證書,加入要改自己的就看證書欄目,都有教程的。Mark!

    總結(jié)

    以上是生活随笔為你收集整理的【转】学习apicloud和IOS之间的模块化使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。