Cordova+ ios 插件開發


//ios 插件開發
//Echo iOS Plugin Example
//配置  在config.xml中
<platform name="ios">
    <config-file target="config.xml" parent="/*">
        <feature name="Echo">
            <param name="ios-package" value="CDVEcho" />
        </feature>
    </config-file>
</platform>

//Echo 頭文件
#import <Cordova/CDC.h>
@interface CDVEcho:CDVPlugin
//實例方法
-(void) echo:(CDVInvokedUrlCommand *) command;
@end

//實現部分
#import "CDVEcho.h"
#import <Cordova/CDC.h>

@implementation CDVEcho

-(void) echo:(CDVInvokedUrlCommand *) command
{
    CDVPluginResult* pluginResult = nil;
    NSString* echo = [command.arguments objectAtIndex:0];

    if (echo != nil && [echo length] > 0)
    {
        pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:echo];
    } 
    else 
    {
        pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR];
    }
    [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
}
@end

//線程處理
 - (void)myPluginMethod:(CDVInvokedUrlCommand*)command
{
    // Check command.arguments here.
    [self.commandDelegate runInBackground:^{
        NSString* payload = nil;
        // Some blocking logic...
        CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:payload];
        // The sendPluginResult method is thread-safe.
        [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
    }];
}
//^{}:用來等待queue里的最后一個block被執行掉,常用操作之一
//^這個東西,說明一個塊函數,()這個東西是塊里面需要的參數{}執行體
//需要注意的是 weakSelf , 不是直接使用self, 防止循環引用 
[self.commandDelegate runInBackground:^{}];

JavaScript:
1.successFunction:一個成功的回調函數
2.failFunction:一個錯誤回調函數
3.service: 一個本地類名
4.action:本地類方法名
5.args:數組的參數傳遞到本地環境
  exec(<successFunction>, <failFunction>, <service>, <action>, [<args>]);
  
Sample:    
//定義
/**
*    第一個參數是當前模塊的編號
*    第二個參數是回調函數的處理
*/
cordova.define("com.jajacy.cordova.message.echo", function(require, exports, module) {
    var exec = require('cordova/exec');
    var platform = require('cordova/platform');
    /**
     * Provides access to Echo on the device.
     * 在設備上提供通知。
    */
    module.exports = {
        /**
         * Demo
         * @param {String} message
         * @param {Function} completeCallback 
         */
        echo: function(message,callback) {
            exec(callback, function(err){
                callback('Nothing to echo.');
            }, "Echo", "echo", [message]);
        }
    };
});

//cordova_plugins.js  插件配置
cordova.define('cordova/plugin_list', function(require, exports, module) {
    module.exports = [{
            "file": "plugins/com.JajaCy.cordova.echo/www/echo.js",//插件文件的路徑
            "id": "com.jajacy.cordova.message.echo",//插件模塊的編號
            "merges": [
                "window"//調用的使用使用的方法
            ]
        }];
    module.exports.metadata = 
    // TOP OF METADATA
    {
        "com.jajacy.cordova.message": "0.0.1",
    }
    // BOTTOM OF METADATA
});

//調用
 window.echo('Hello Echo!',function(data){
    alert(data);
 });
 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM