Плагин PhoneGap для IOS ... часть JavaScript - PullRequest
0 голосов
/ 30 марта 2012

Мне нужно создать плагин PhoneGap для IOS, который выбирает всех исполнителей из музыкальной библиотеки.Я знаю, как это сделать в Objective C, но я понятия не имею о JavaScript.Я прочитал документы по плагину phongegap для iOS, но я не понимаю части 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 голос
/ 30 марта 2012

Пара вещей:

  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 (т. Е. Ключ: ArtistPlugin, значение: ArtistPlugin).

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...