2012-01-12 21 views
0

我是手機開發新手。我爲iphone創建了一個插件類,其中包含一些加密方法。我想使用.h和.m文件來加密我的數據,並從我的html頁面中的類文件中獲取數據。但我不知道如何在我的頁面中調用JavaScript文件中的類函數。請任何人有想法如何調用任何類文件和它的方法在JavaScript的iPhone應用程序,然後幫助我,我在等待答覆。如何使用手機插件

+0

從JavaScript調用Obj C函數。 HTTP://計算器。com/questions/1662473/how-to-call-objective-c-from-javascript – AAV 2012-01-12 18:51:18

回答

3

請參閱Paul回答的鏈接。爲了快速運行,有一些方法可以做到這一點,但我通常會得到這樣的結果。

的Javascript:

PhoneGap.exec("NameOfObjectiveCFile.nameofMethod","parameter1", "parameter2"); 

目標C:

-(void)nameOfMethod:(NSMutableArray*)paramArray withDict: (NSMutableDictionary*) options 
    { 
     //Do your stuff 
     //Access your params you sent in javascript by doing the following 
     NSString *parameter1 = [paramArray objectAtIndex:0]; 
     //Send stuff back to Javascript using a callback function 
     NSString *jsCallBack = [NSString stringWithFormat:@"nameofJavascriptFinishedMethod(%@)",parameterToSendBack]; 
     [self.webview stringByEvaluatingJavaScriptFromString:jsCallBack]; 

    } 

返回的Javascript:

function nameofJavascriptFinishedMethod(parameterFromObjectiveC) 
{ 
    //Do stuff with information from objective C 
} 

還記得你需要在你Phonegap.plist 希望這會註冊你的插件幫助,祝你好運。

更新:如果你想要你的html發送信息到你的插件,我會使用一個HTML表單或按鈕或觸發一個動作,將調用你的JavaScript函數(上面的第一個)並傳遞你收集到的變量從你的領域。有關表單基礎知識,請參閱此link

更新2
1)在Xcode中創建新的PhoneGap項目,並建立獲得WWW文件夾
2)加入現有的加密對象的C文件到項目
3)創建新的目標C級,稱之爲EncryptPlugin (參見下一個步驟5)
4)編輯PhoneGap.plist文件
一)添加插件下的新條目
b)命名它EncryptPlugin字符串EncryptPlugin
爲EncryptPlugin 5)頭文件應該是這樣

#import <Foundation/Foundation.h> 
#import <UIKit/UIkit.h> 

#ifdef PHONEGAP_FRAMEWORK 
#import <PhoneGap/PGPlugin.h> 
#else 
#import "PGPlugin.h" 
#endif 

@interface EncryptPlugin : PGPlugin { 



} 
-(void) useMyEncryptionFiles:(NSMutableArray*)paramArray withDict:(NSMutableDictionary*)options; 
@end 

6)實現文件應該是這樣的

#import "EncryptPlugin.h" 
#import "EncryptPacket.h" 


@implementation EncryptPlugin 


//phonegap magic -- basically ignore 
-(PGPlugin*) initWithWebView:(UIWebView*)theWebView 
{ 
    self = (PdfCreator*)[super initWithWebView:theWebView]; 
    return self; 
} 

//The method that your javascript is going to call 
-(void) useMyEncryptionFiles:(NSMutableArray*)paramArray withDict:(NSMutableDictionary*)options 
{ 
    //This gives you your string 
    NSString *stringFromJavascript = [paramArray objectAtIndex:0]; 

    EncryptPacket *ep = [[EncryptPacket alloc] init]; 

    NSString *encryptedString = [ep encryptRequest:stringFromJavascript]; 

    NSLog(@"encryptedString = %@",encryptedString); 
} 




@end 

7)在你的HTML中使用這樣的事情 p1.html JavaScript調用該函數

<head><script type="text/javascript" src="encryptdata.js"></script></head> 
<body> 
<input type="password" name="confirmPassword" id="confirmPassword" value="" /> 
<input type="button" value="FetchR" onclick="fetchRelation()"/> 
</body> 



encryptdata.js 
function fetchRelation() 
{ 
    var getvalue=document.getElementById('confirmPassword').value; 

    //what is next step....... to send the data to the plugin class 
    PhoneGap.exec("EncryptPlugin.useMyEncrptionFiles",getValue); 
} 

這應該讓你開始。如果你想送的東西回來給你的HTML的JavaScript然後用我上面指定的功能:

NSString *jsCallBack = [NSStringstringWithFormat:@"nameofJavascriptFinishedMethod(%@)",parameterToSendBack]; 
      [self.webview stringByEvaluatingJavaScriptFromString:jsCallBack]; 

希望這會有所幫助,你應該能夠使用這些指令來弄明白。它們可能並不完美,但我沒有時間將它們放在一起並使用代碼進行編譯。祝你好運。

+0

尊敬的黑客,你會請指導我如何獲得HTML文本輸入以及如何將該輸入發送到插件類。以及安裝插件類所需的代碼。如果您有任何想法,請指導我 – Sandeep 2012-01-13 12:42:59

+0

您想設置一個html表單。提交後,使用上述過程將變量發送到您想要的插件。我會嘗試編輯答案以提供更多幫助。 – hatunike 2012-01-13 17:36:38

+0

我會更新答案給我一個小時左右。 – hatunike 2012-01-14 21:28:18