适用于ios的Phonegap插件..javascript部分

Phonegap plugin for ios...javascript part

本文关键字:javascript 部分 插件 Phonegap ios 适用于      更新时间:2023-09-26

我需要为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. 最好在Obj-C和JavaScript中的主类之间保持名称相同。在您的情况下,这意味着您的Obj-C类应该称为ArtistPlugin,或者您创建的JavaScript对象(及其文件名)应该称为Artist。我会接受所有被称为ArtistPlugin的人。不太可能发生冲突。

  2. PhoneGap.exec的最后一个参数是数组,所以除非types是数组,否则它可能看起来像:return PhoneGap.exec(success, fail, "Artist", "getArtistNames", [types]);

  3. 最后,确保在PhoneGap.list文件的插件部分有一个条目。键和值将是您从步骤#1中选择的同质名称(即:键:ArtistPlugin,值:ArtistPlugin)。

希望能有所帮助。