2012-03-30 68 views
0

我需要爲ios創建一個phonegap插件,以便從音樂庫中提取所有藝術家。我知道如何在Objective C中做到這一點,但我不知道JavaScript。我閱讀iOS的phongegap插件文檔,但我不明白的JavaScript部分。請幫忙。 繼承人我的代碼...ios的Phonegap插件... javascript部分

Artist.m 

#import "Artist.h" 
#import <MediaPlayer/MediaPlayer.h> 
#import <PhoneGap/PGPlugin.h> 
@implementation Artist 

-(void)getArtistNames:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options 
{ 
    MPMediaQuery *query=[MPMediaQuery artistsQuery]; 
    NSArray *artists=[query collections]; 
    artistNames=[[NSMutableArray alloc]init]; 
    for(MPMediaItemCollection *collection in artists) 
    { 
     MPMediaItem *item=[collection representativeItem]; 
     [artistNames addObject:[[item valueForProperty:MPMediaItemPropertyArtist]stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]]; 
    } 
    uniqueNames=[[NSMutableArray alloc]init]; 

    for(id object in artistNames) 
    { 
     if(![uniqueNames containsObject:object]) 
     { 
      [uniqueNames addObject:object]; 
     } 
    } 
    NSLog(@"%@",uniqueNames); 

    PluginResult *pluginResult=[PluginResult resultWithStatus:PGCommandStatus_OK messageAsArray:uniqueNames]; 
    [self writeJavascript:[pluginResult toSuccessCallbackString:[arguments pop]]]; 

} 

@end 

Artist.js

var ArtistPlugin={}; 

ArtistPlugin.prototype.getArtistNames = function(types, success, fail) 
{ 

      return PhoneGap.exec(success, fail, "Artist", "getArtistNames", types); 
} 
index.html中

...

<script type="text/javascript" charset="utf-8" src="Artist.js"></script> 

function onDeviceReady() 
    { 
     // do your thing! 

     navigator.notification.alert("PhoneGap is working"); 
     alert('asdasd'); 
     var abc=Artist.getArtistNames(types, success, fail); 

     alert(abc); 
    } 

回答

1

有兩件事情:

  1. 最好在Obj-C和JavaScript的主類中保持相同的名稱。在你的情況下,這意味着你的Obj-C類應該被稱爲ArtistPlugin,或者你創建的JavaScript對象(它的文件名)應該被稱爲Artist。我會去所有被稱爲ArtistPlugin。衝突的可能性較小。

  2. 的最後一個參數PhoneGap.exec是一個數組,所以除非types是一個數組,它或許應該是這樣的:return PhoneGap.exec(success, fail, "Artist", "getArtistNames", [types]);

  3. 最後,確保你在你的PhoneGap.plist的插件節中的項文件。關鍵和價值將是您從步驟#1選擇的同名名稱(即:key:ArtistPlugin,值:ArtistPlugin)。

希望有所幫助。

+0

是的,我得到它現在的工作,仍然我更喜歡客觀C隨時:) – 2012-03-30 10:46:23