ios的Phonegap插件...javascript部分

Posted

技术标签:

【中文标题】ios的Phonegap插件...javascript部分【英文标题】:Phonegap plugin for ios...javascript part 【发布时间】:2012-03-30 08:54:29 【问题描述】:

我需要为 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 的人。不太可能发生冲突。

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

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

希望对您有所帮助。

【讨论】:

是的,我现在可以使用它了,但我仍然更喜欢 Objective C :)

以上是关于ios的Phonegap插件...javascript部分的主要内容,如果未能解决你的问题,请参考以下文章

Phonegap 3.0 iOS7 ApplicationPreferences 插件

如何在phonegap中为ios添加插件?

在phonegap中为ios压缩图像插件

ios的Phonegap插件...javascript部分

phonegap 2.9.1 的 IOS Write 插件 [关闭]

iOS PhoneGap 1.7.0 + 条码扫描插件问题