ios的phonegap插件... javascript部分

时间:2012-03-30 08:54:29

标签: javascript iphone ios plugins cordova

我需要为ios创建一个phonegap插件,从音乐库中提取所有艺术家。我知道如何在Objective C中做到这一点,但我不知道javascript。我读了iOS的phongegap插件文档,但我不懂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 个答案:

答案 0 :(得分: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,value:ArtistPlugin)。

  4. 希望有所帮助。