nativescript-audio插件在ios上不起作用

时间:2019-03-04 12:31:39

标签: audio plugins nativescript

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

  

NSURLErrorDomain代码= -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...");
        })

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

2 个答案:

答案 0 :(得分:0)

我为您创建了一个普通的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;
}

答案 1 :(得分:0)

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

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

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

我也遇到了一个愚蠢的疏忽,很容易错过。 我是根据上述示例创建的代码,但是因为我播放了录制到.caf文件中的声音。我需要使用playFromFile而不是playFromUrl作为示例使用。 (多数民众赞成在引起错误的原因:NSURLErrorDomain代码= -1002“不受支持的网址”。)

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

希望这种关注点可以使某人头疼!