Ionic 3 и хранилище firebase

Существует ситуация, когда у меня есть несколько аудиофайлов в хранилище firebase, и мне нужно загрузить в локальную память телефона, поэтому, когда я запускаю приложение, он должен проверить, есть ли какой-либо звук в локальной памяти, если он существует, он воспроизводит, в противном случае загрузите его из хранилища firebase.

Кто-нибудь может мне помочь с этим ionic 3 и firebase?

У меня есть эта связь

<script src = "https://www.gstatic.com/firebasejs/5.0.4/firebase.js"></script>
<script >
var config = {
apiKey: "AIzaSyAg6dBk2BJ-DlFHm0f0G-9XpIcjb-Zl7DY",
authDomain: "helloworld-4e6e6.firebaseapp.com",
databaseURL: "https://helloworld-4e6e6.firebaseio.com",
projectId: "helloworld-4e6e6",
storageBucket: "helloworld-4e6e6.appspot.com",
messagingSenderId: "386944915967"
};
firebase.initializeApp(config);
</script>

вот файл my.ts

import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { AboutPage } from '../about';
import { FileTransfer, FileUploadOptions, FileTransferObject } from '@ionic- 
native/file-transfer';
import { NativeAudio } from '@ionic-native/native-audio';

@Component({
   selector: 'page-home',
   templateUrl: 'home.html'
 })
 export class HomePage {
 bleep = new Audio();
   constructor() {
}
 download() {
     const url = 'https://firebasestorage.googleapis.com/v0/b/helloworld- 
 4e6e6.appspot.com/o/audio%2Fp10_1.mp3?alt=media&token=12bf3400-17a7-4cf9- 
 b862-973707a3164e';
      fileTransfer.download(url, this.file.dataDirectory + 
 'test.mp3').then((entry) => {
       console.info('download complete: ' + entry.toURL());
     }, (error) => {
          console.info('Error during download: '+error);
      });
   }


 wajid()
 {

 const fileTransfer: FileTransferObject = this.transfer.create();
 this.download();
 this.nativeAudio.preloadSimple('uniqueId1', this.file.dataDirectory + 
 'test.mp3').then((res) => {
         console.info('Mp3 ready');
     }, (error) => {
         console.info("Some error during load the audio "+error);
      });

      this.nativeAudio.play('uniqueId1').then((onSuccess)=>{
          console.info('Mp3 reproduced ok');
      }, (onError)=>{
          console.info("Some error during reproduce of the audio "+onError);
      });

      // can optionally pass a callback to be called when the file is done 
   playing
      //this.nativeAudio.play('uniqueId1', () => console.info('uniqueId1 is 
  done playing'));


 }

вот моя кнопка html

<div class= "sections" style = "width: 18%;" (tap) = "wajid()" (press) = "wajidlong5()">
      <div class = "sections" id = "sec1" >
       ﻞَ  
      </div><!--
      --><div class = "sections" id = "sec2" >
         ﻌَ  
      </div><!--
      --><div class = "sections" id = "sec3" >
           ﺟَ  
      </div>

    </div> 

Не совсем .... Вы должны узнать больше об ионном ... Это не так просто.

Cristian 27.06.2018 10:29

@Cristian, откуда я научился достигать этого, мне действительно нужно сделать это как можно скорее! помоги мне чувак

Fahad Jameel 27.06.2018 10:34

Здесь: ionicframework.com/docs/native, ищите File Transfer, там вы также можете проверить, существует ли уже файл

Cristian 27.06.2018 10:50

@Cristian, мне нужно загрузить звук из хранилища firebase, а затем проверить, не существует ли он, воспроизводится из ресурсов, иначе он загрузит и поместит этот звук в папку ресурсов, а затем воспроизведет из ресурсов. Пожалуйста, помогите :)

Fahad Jameel 27.06.2018 11:30

Вы не можете вкладывать напрямую в активы. Проверьте плагин FILETRANSFER ionic

Cristian 27.06.2018 11:33
ionicframework.com/docs/native/file-transfer
Cristian 27.06.2018 11:33

@Cristian, во-первых, как мне скачать это аудио?

Fahad Jameel 27.06.2018 11:40
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
7
275
1

Ответы 1

Чтобы загрузить аудио, используйте: Передача файлов

const fileTransfer: FileTransferObject = this.transfer.create();

import { File } from '@ionic-native/file';

constructor(private file: File) { }

download() {
  const url = 'https://firebasestorage.googleapis.com/v0/b/helloworld-4e6e6.appspot.com/o/audio%2Fp10_1.mp3?alt=media&token=12bf3400-17a7-4cf9-b862-973707a3164e';
  fileTransfer.download(url, this.file.dataDirectory + 'test.mp3').then((entry) => {
    console.info('download complete: ' + entry.toURL());
  }, (error) => {
    // handle error
  });
}

Чтобы проверить, находится ли файл в вашей папке, используйте этот собственный плагин Файл.

Посмотрите на две спецификации плагинов.

Если проблема возникла, спрашивайте здесь, и я отредактирую ответ

Чтобы воспроизвести файл, вы должны использовать ИСХОДНОЕ АУДИО. ТАК:

this.nativeAudio.preloadSimple('uniqueId1', this.file.dataDirectory + 'test.mp3').then(onSuccess, onError);

И СЕЙЧАС:

this.nativeAudio.play('uniqueId1').then(onSuccess, onError);

// can optionally pass a callback to be called when the file is done playing
this.nativeAudio.play('uniqueId1', () => console.info('uniqueId1 is done playing'));

Полный код:

import { FileTransfer, FileUploadOptions, FileTransferObject } from '@ionic-native/file-transfer';
import { File } from '@ionic-native/file';
import { NativeAudio } from '@ionic-native/native-audio';

constructor(private transfer: FileTransfer,private file: File,private nativeAudio: NativeAudio) {
    const fileTransfer: FileTransferObject = this.transfer.create();
    this.download();
    this.nativeAudio.preloadSimple('uniqueId1', this.file.dataDirectory + 'test.mp3').then((res) => {
        console.info('Mp3 ready');
    }, (error) => {
        console.info("Some error during load the audio "+error);
    });

    this.nativeAudio.play('uniqueId1').then((onSuccess)=>{
        console.info('Mp3 reproduced ok');
    }, (onError)=>{
        console.info("Some error during reproduce of the audio "+onError);
    });

    // can optionally pass a callback to be called when the file is done playing
    //this.nativeAudio.play('uniqueId1', () => console.info('uniqueId1 is done playing'));

 }

download() {
    const url = 'https://firebasestorage.googleapis.com/v0/b/helloworld-4e6e6.appspot.com/o/audio%2Fp10_1.mp3?alt=media&token=12bf3400-17a7-4cf9-b862-973707a3164e';
    fileTransfer.download(url, this.file.dataDirectory + 'test.mp3').then((entry) => {
      console.info('download complete: ' + entry.toURL());
    }, (error) => {
        console.info('Error during download: '+error);
    });
  }

В вашей page.ts. download () - это функция для загрузки файла. this.file.dataDirectory - это каталог, в который будет загружен файл.

Cristian 27.06.2018 12:19

мне нужно указать путь, заменяющий this.file.dataDirectory, или пусть он будет таким, каким он есть, кстати, мой файл должен быть загружен в каталог (Desktop \ hello \ www \ assets \ звуки)

Fahad Jameel 27.06.2018 12:42

мой URL-адрес аудио хранилища firebase -> firebasestorage.googleapis.com/v0/b/…, и где мне нужно его загрузить, то есть -> Desktop \ hello \ www \ assets \ звуки, вы можете отредактировать эти URL-адреса

Fahad Jameel 27.06.2018 12:44

Ставлю url, путь, куда сохранять, ищу по File plugin

Cristian 27.06.2018 12:47

Я разместил ваш код выше при нажатии кнопки, так что теперь он должен загрузиться, и как воспроизвести загруженный файл?

Fahad Jameel 27.06.2018 12:54

извините, Кристиан, я так смущен, что выдает мне ошибку, вы можете отредактировать сообщение и сделать это шаг за шагом? 1. Аудио загружается в хранилище Firebase, и там есть URL-адрес. 2. Загрузите аудио из хранилища и сохраните его в папке с ресурсами при нажатии кнопки. URL есть 3. Затем воспроизведите загруженный звук из ресурсов, и если звук не существует в ресурсах, он должен загрузить его из хранилища firebase. по крайней мере, в пунктах 1 и 2 вы можете прояснить это для меня, чтобы я смог его достичь. я буду вам очень благодарен.

Fahad Jameel 27.06.2018 13:11

Когда я нажимаю кнопку, чтобы вызвать эту функцию загрузки, я получаю сообщение об ошибке «не могу прочитать свойство 'create' из undefined.

Fahad Jameel 27.06.2018 13:18

Помогите мне с этим братом, даже если я могу заплатить некоторую сумму, чтобы добиться этого :(

Fahad Jameel 27.06.2018 13:43

Я объясняю все шаги, чтобы написать полный код, у меня уходит 1 час, поэтому я не могу. Пожалуйста, задайте какой-нибудь конкретный вопрос, и я смогу вам ответить .. Но я не могу написать весь код ...

Cristian 27.06.2018 14:36

Я вставил ваш код выше, и когда я нажимаю кнопку, чтобы загрузить аудио, возникает ошибка.

Fahad Jameel 27.06.2018 14:42

Определяется это? this.file.dataDirectory ... импортировать файл

Cristian 27.06.2018 15:09

я не понял тебя

Fahad Jameel 27.06.2018 15:11

позволь мне проверить это сейчас, Кристиан

Fahad Jameel 28.06.2018 09:08

мне нужно скачать аудио в приложении

Fahad Jameel 28.06.2018 09:37

Я скопировал весь ваш код, все еще давая мне ошибку, которая не может прочитать свойство create из undefined.

Fahad Jameel 28.06.2018 09:43

Я отредактировал свой пост, Кристиан, теперь помоги мне с этим, когда я нажимаю кнопку, он по-прежнему дает мне ту же ошибку, которая не может прочитать свойство 'create' of undefined

Fahad Jameel 28.06.2018 13:31

Ваш конструктор () пуст

Cristian 28.06.2018 14:54

что должно быть в конструкторе? любезно скопируйте мой пост, исправьте и отредактируйте свой пост. Я буду очень благодарен тебе, Кристиан.

Fahad Jameel 28.06.2018 15:03

конструктор (частный перенос: FileTransfer, частный файл: File, частный nativeAudio: NativeAudio) {... поместите все сюда}

Cristian 28.06.2018 15:14

Другие вопросы по теме