Cordova plugin for iOS && Web互相調(diào)用及參數(shù)傳遞

1?? 嘚吧嘚:
在做Hybrid 開(kāi)發(fā)過(guò)程中,涉及到要調(diào)用原生 SDK, 只好學(xué)習(xí)了下 Cordova 插件開(kāi)發(fā), 其中有一篇不錯(cuò)的 文章.

原文鏈接

一開(kāi)始的時(shí)候可能會(huì)理不清一些概念之間的關(guān)系, 比如插件 與插件類, 插件類與方法之間, 在此做一次梳理, 見(jiàn)圖:

插件與插件類之間的關(guān)系.png
 a. 一個(gè)插件可以有多個(gè) '插件類',一個(gè)'插件類' 可以有多個(gè)'方法';
 b. 此處 '插件' 對(duì)應(yīng)下圖中的 'service', 地位等同于
     'cordova-plugin-wechat'等.
 c. 插件類的方法 , 就是下圖中的 'action', 是某插件類的'方法名字符串'. 
 d. web 端要傳遞數(shù)據(jù) || 參數(shù)信息 到 native 端, 是將信息拼接成數(shù)組的形式, 放到第四個(gè)參數(shù)的位置.
    如下圖 '[params]'
在js文件的 click事件觸發(fā)方法中調(diào)用擴(kuò)展方法.png

?? 文本端示例代碼: <數(shù)據(jù)流向: JS --> OC 插件類>

按鈕綁定 onclick 事件.html.png

3?? 數(shù)據(jù)流向: OC --> JS 插件類

  1. 創(chuàng)建繼承自 CDVPlugin的插件類
1. 創(chuàng)建繼承自 CDVPlugin的插件類.png

2 . 在自定義方法的實(shí)現(xiàn)中實(shí)現(xiàn)業(yè)務(wù)邏輯, 最后傳遞結(jié)果給 web 端

當(dāng) OC 插件類的方法中, 返回的數(shù)據(jù)的格式可以是任意數(shù)據(jù)類型, 但是需要指定一下, 如下圖:
30 - 33行, 是接收 web 端傳遞過(guò)來(lái)的數(shù)據(jù)(一定是數(shù)組的形式)
34 - 36行, oc 插件層傳遞參數(shù)到 web 端(數(shù)據(jù)的格式需要指定,可以是任意類型), oc 端指定參數(shù)是什么類型, 那么在 web 端的回調(diào)函數(shù)的參數(shù)就是什么類型

插件層接收 web 端傳遞過(guò)來(lái)的參數(shù)數(shù)組, 返回任意類型數(shù)據(jù)結(jié)果.png

Paste_Image.png

插件層實(shí)例代碼:

#import "EOPlugin.h"
@implementation EOPlugin
- (void)myMethod:(CDVInvokedUrlCommand*)command {
CDVPluginResult* pluginResult = nil;
NSString* myarg = [command.arguments objectAtIndex:0];
if (myarg != nil) {
    pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK];
} else {
    pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString:@"Arg was null"];
}
NSLog(@"---- \n\n%s\n\n----",__FUNCTION__);

[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];

   // [self.commandDelegate runInBackground:^{
   //      在后臺(tái)線程執(zhí)行
   // }];
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,527評(píng)論 19 139
  • 點(diǎn)擊查看原文 Web SDK 開(kāi)發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 14,299評(píng)論 0 15
  • 今年年初,有機(jī)會(huì)去了一次西安,常說(shuō)這是帝王都,故我在西去的火車上向往了許久。 天色已黑時(shí)才到打目的地,一出車站就看...
    LM啦啦啦閱讀 337評(píng)論 0 2
  • 天香新書盟主收女頻,收稿類型:總裁、婚戀、職場(chǎng)、寶寶、古言、玄幻、仙俠……題材不限 2萬(wàn)字申請(qǐng)簽約,簽約就算全勤,...
    店長(zhǎng)令儀閱讀 295評(píng)論 0 0
  • 瑟瑟的寒風(fēng)于黃昏中望月光不在 薄如蟬翼的劍氣追逐到春去秋來(lái) 絢爛的燈火催促潺潺的流水靜待花開(kāi) 沉默的微笑何必相逢更...
    安城的真金閱讀 618評(píng)論 1 6

友情鏈接更多精彩內(nèi)容