Lösung für das Problem, dass die Audiokomponente des WeChat-Applets unter iOS nicht abgespielt werden kann.

Lösung für das Problem, dass die Audiokomponente des WeChat-Applets unter iOS nicht abgespielt werden kann.

Lösung: Binden Sie das Klickereignis an die Audiokomponente und lösen Sie die Wiedergabe- und Pausenmethoden manuell aus!

Codeausschnitt:

WXML-Datei

<!-- Es handelt sich um einen Sprachanruf, es liegt ein Anrufprotokoll vor und die Anrufbeschreibung enthält nicht „verpasst“ -->
<Ansichtsklasse="Referenz"
    wx:if="{{itemList.activity_type === 'phone' && itemList.activity_reference_id && tool.indexOf(itemList.comment,'missed') === -1 }}">
    <!-- Sprachwiedergabe-->
    <van-button class="ref-btn" wx:if="{{audioResourceMaps[itemList.activity_reference_id] === undefiniert}}"
      wird geladen="{{itemList.activity_reference_id === currentGettingReferenceId}}" Symbol="abspielen" Typ="info" einfach
      Datenreferenz-ID = "{{itemList.activity_reference_id}}" bindtap = "getReference">
    </van-button>
    <Ansicht wx:sonst Klasse="Audio-Box">
        <!-- Sprachwiedergabe pausieren -->   
      <van-button class="ref-btn" wx:if="{{audioResourceMaps[itemList.activity_reference_id]}}"
      Datenreferenz-ID = "{{itemList.activity_reference_id}}"
        icon="pause" type="info" plain bindtap="pauseAudio"/>
        <!-- Klicken Sie auf „Keine Anrufaufzeichnung“--> 
      <span wx:else class="no-audio-text">Keine Anrufaufzeichnung gefunden</span>
    </Ansicht>
</Ansicht>

WXSS-Datei

.Referenz {
  Rand oben: 20rpx;
  Höhe: 100%;
  Polsterung: 5rpx;
  Box-Größe: Rahmenbox;
}

.ref-btn {
  Breite: 80rpx;
  Höhe: 80rpx;
  Anzeige: Flex;
}

.ref-btn-Schaltfläche {
  Breite: 80rpx;
  Höhe: 80rpx;
  Randradius: 50 %;
}

js-Datei

/**
   * Ausgangsdaten der Komponente */
  Daten: {
    currentGettingReferenceId: null, //Die aktuell abgespielte Audio-ID
    audioResourceMaps: {}, //Liste der angeklickten Audios isPause:false, //Pause oder nicht},
/**
   * Komponentenlebenszyklus */
  Lebensdauern:
    angehängt: Funktion () {
      // Da es sich um eine Unterkomponente handelt, müssen Sie die Instanz hier abrufen: this.audioContext = wx.createInnerAudioContext();
    },
    getrennt: Funktion () {
      // Wiedergabe von this.stopAudio() beenden
      // Wird ausgeführt, wenn die Komponenteninstanz aus dem Seitenknotenbaum entfernt wird},
  },
  Methoden: { 
    // Die Aufnahme abrufen getReference(e) {
      let id = e.target.dataset.referenceId
      wenn(id != diese.Daten.currentGettingReferenceId){
        dies.stopAudio()
      }
      dies.setData({
        aktuelleGettingReferenceId:id
      })
      // Klicken Sie auf die Schnittstelle, um die Aufzeichnungs-URL zu erhalten. Die Schnittstellenanforderung wird gemäß der eigenen Kapselung WXAPI.getResourceUrl ( geschrieben.
        `/Gespräch/Gesprächssitzung/${id}/`, {
          Datentyp: "alle",
        }).then(({resource_url}) => {
          console.log('Audioadresse ====',Ressourcen-URL,)
        let url = resource_url && resource_url.indexOf('https://') > -1? encodeURI(resource_url) : null
        diese.data.audioResourceMaps[id] = URL;
        wenn(Ressourcen-URL) dies.playAudio(ID,URL)
        dies.setData({
          audioResourceMaps: this.data.audioResourceMaps
        })
        console.log('Abgespielte Liste =====',this.data.audioResourceMaps)
      }).fangen(Funktion (e) {
        console.log(e)
      })
    },
    // Pause pauseAudio(){
      dies.setData({
        istPause: !this.data.isPause
      })
      let id = diese.Daten.currentGettingReferenceId
      console.log(id,'Wiedergabe pausiert ID')
      const innerAudioContext = dieser.audioContext
      wenn(diese.Daten.istPause){
        innerAudioContext.pause()
        console.log('Wiedergabe pausieren')
      }anders{
        innerAudioContext.play()
        console.log('Weiterspielen')
      }
    },
    // Wiedergabe beenden stopAudio(){
      const innerAudioContext = dieser.audioContext
      innerAudioContext.stop()
      let obj = this.data.audioResourceMaps
      für (let item in obj) {
        Objekt [Element] löschen
      }
      // Um ​​die Wiedergabe zu stoppen, löschen Sie die Audioadresse, die der Playlist-ID entspricht this.setData({
        audioResourceMaps: obj,
        currentGettingReferenceId:null
      })
      console.log('Abspielen beenden')
    },
    // Abspielen playAudio(id,url) {
      const innerAudioContext = dieser.audioContext
      console.log(URL, „Audioadresse“)
      wenn(URL){
        innerAudioContext.src = URL
        innerAudioContext.play()
        innerAudioContext.onPlay(() => {
          console.log('Starten Sie die Wiedergabe')
        })
        innerAudioContext.onTimeUpdate(() => {
          console.log(innerAudioContext.duration,'Gesamtdauer')   
          console.log(innerAudioContext.currentTime,'Aktueller Wiedergabefortschritt')
        })
        setzeTimeout(() => {
          console.log(innerAudioContext.duration,'Gesamtdauer')   
          console.log(innerAudioContext.currentTime,'Aktueller Wiedergabefortschritt')
        }, 500)
        innerAudioContext.onEnded(() => {
          let obj = this.data.audioResourceMaps
          für (let item in obj) {
            Objekt [Element] löschen
          }
          dies.setData({
            audioResourceMaps: obj,
            currentGettingReferenceId:null
          })
          console.log('Wiedergabe abgeschlossen')
        })
        innerAudioContext.onError((res) => {
          console.log(res.errMsg)
          console.log(res.errCode)
        })
      }
    }

Rendern

⚠️Um ​​vant im WeChat-Applet zu verwenden, müssen Sie in der JSON-Datei darauf verweisen, sonst wird das Tag nicht angezeigt

Ich habe es in der Datei app.json zitiert und es ist global verfügbar

"Komponenten verwenden": {
    "van-button": "@vant/weapp/button/index",
    "van-icon": "@vant/weapp/icon/index",
  }

Offizielle Website-Dokumentation: developers.weixin.qq.com/miniprogram…

Zusammenfassen

Dies ist das Ende dieses Artikels zur Lösung des Problems, dass die Audiokomponente des WeChat-Miniprogramms auf der iOS-Seite nicht abgespielt werden kann. Weitere relevante Inhalte zur Wiedergabe der Audiokomponente des Miniprogramms auf der iOS-Seite finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die verwandten Artikel weiter unten. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung des Beispiels einer Audiokomponente eines WeChat-Applets
  • Beispielfunktion für das WeChat-Applet, das eine Audiokomponente zum Abspielen von Musik verwendet [mit Quellcode-Download]

<<:  Ein seltener Fehler und eine Lösung für die vollständige SQL Server-Sicherung

>>:  Grundlegende Schritte zur Verwendung einer Mysql-SSH-Tunnelverbindung

Artikel empfehlen

Der Unterschied zwischen Docker Run und Start

Der Unterschied zwischen Ausführen und Starten in...

Führen Sie die folgenden Schritte aus, damit Docker Images abrufen kann

1. Docker Pull zieht das Image Wenn Sie zum Abruf...

JavaScript verwendet häufig Array-Deduplizierung tatsächliche Kampf Quellcode

Mit der Array-Deduplizierung wird man häufig bei ...

Verwendung des MySQL-Stresstesttools Mysqlslap

1. MySQLs eigenes Stresstest-Tool Mysqlslap mysql...

Schritte zum Upgrade des Ubuntu 16.04-Kernels

1. Umwelt Ubuntu 16.04 läuft auf einer virtuellen...

Einige Vorschläge für HTML-Anfänger und Neulinge, Experten können sie ignorieren

Gefühle: Ich bin Backend-Entwickler. Manchmal fühl...

Lösung für das Problem, dass der Docker-Container nicht gestoppt werden kann

Die Lösung lautet wie folgt: 1. Container löschen...

Tipps zum Erstellen zweidimensionaler Arrays in JavaScript

Erstellen eines zweidimensionalen Arrays in Js: Z...

Beispiel für utf8mb4-Sortierung in MySQL

Allgemeine utf8mb4-Sortierregeln in MySQL sind: u...