【问题标题】:nativescript-audio plugin does not function on iosnativescript-audio 插件在 ios 上不起作用
【发布时间】:2019-03-18 23:51:36
【问题描述】:

我已经成功地在 android 上实现了 nativescript-audio 插件。我在我的项目中使用纯 JS。当我在 ios 上运行它时,出现以下错误。

NSURLErrorDomain Code= -1002 "不支持的 url"。

我在网上找到的大多数示例都出现了这个错误(包括以下,在 android 上完美运行)。

var ns_audio = require("nativescript-audio");

var player = new ns_audio.TNSPlayer();

var playerOptions = {
        audioFile: "http://www.noiseaddicts.com/samples_1w72b820/2514.mp3",
        loop: false,
        completeCallback: function () {
            console.log('completePlayer')
        },
        errorCallback: function (errorObject) {
            console.log(JSON.stringify(errorObject));
        },
        infoCallback: function (args) {
            console.log(JSON.stringify(args));
        }
    };

player.playFromUrl(playerOptions)
        .then(function (res) {
            console.log(res);
        })
        .catch(function () {
            console.log("didn't work...");
        })

看起来录制工作正常(没有错误,并且响应正确,尽管我无法测试文件是否已正确创建...)但是播放会出现此错误。有什么想法吗?

【问题讨论】:

  • 您是否在您的信息列表中启用了NSAllowsArbitraryLoads,它将您的应用程序中使用的所有 Http url 列入白名单?
  • 我做到了,谢谢。但这不是问题!

标签: audio plugins nativescript


【解决方案1】:

我为你创建了一个普通的 JS playground。我已经测试了您在帖子中提供的 mp3 URL,并且在 ios 上运行良好。 玩一下,看看你是否遗漏了什么。这里是

function pageLoaded(args) {

  var page = args.object;


  const player = new audio.TNSPlayer();
  const playerOptions = {
    audioFile: 'http://www.noiseaddicts.com/samples_1w72b820/2514.mp3',
    loop: false,
    completeCallback: function () {
      console.log('finished playing');
    },
    errorCallback: function (errorObject) {
      console.log(JSON.stringify(errorObject));
    },
    infoCallback: function (args) {
      console.log(JSON.stringify(args));
    }
  };

  player
    .playFromUrl(playerOptions)
    .then(function (res) {
      console.log(res);
    })
    .catch(function (err) {
      console.log('something went wrong...', err);
    });
  page.bindingContext = homeViewModel;
}

【讨论】:

    【解决方案2】:

    使用 nativescript-audio 插件(适用于 iOS)进行录制和播放现在都可以正常工作了!我的第一个问题是我需要录制到 .caf(不是 .mp3),所以我使用了

    if(isAndroid)
    { 
        extention = ".mp3"; 
    }
    else 
    { 
        extention = ".caf"; 
    } 
    

    在我录制音频文件之前......

    我也遇到了一个很容易错过的愚蠢疏忽...... 我从上面提到的示例中创建了我的代码,但是因为我播放了录制到 .caf 文件中的声音。我需要使用 playFromFile 而不是 playFromUrl 作为示例使用。 (这就是导致错误的原因:NSURLErrorDomain Code= -1002 "unsupported url"。)

     player
        .playFromFile(playerOptions)
        .then(function (res) {
    

    希望这一点可以省去一些人的头疼!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多