Maison  >  Questions et réponses  >  le corps du texte

Comment enregistrer automatiquement les vCards-js sur les contacts iPhone et Android

J'essaie d'enregistrer une vCard sur le téléphone de l'utilisateur (IOS et ANDROID). J'utilise ce code

window.addEventListener("load", function () {
  // Contact Information
  var contact = {
    ...
  };
  // create a vcard file
  var vcard = "BEGIN:VCARD\nVERSION:3.0\n"
    + "N:" + contact.name + ";;;\n"
    + "FN:" + contact.name + "\n"
    + "TEL;CELL:" + contact.phone + "\n"
    + "TEL;CELL:" + contact.mobile + "\n"
    + "EMAIL;HOME:" + contact.email + "\n"
    + "ADR;HOME:" + contact.address + "\n"
    + "ORG;WORK:" + contact.organization + "\n"
    + "TITLE:" + contact.title + "\n"
    + "URL:" + contact.url + "\n"
    + "NOTE:" + contact.notes + "\n"
    + "END:VCARD";  
  
  // var vcard = "BEGIN:VCARD\nVERSION:4.0\nFN:" + contact.name + "\nTEL;TYPE=work,voice:" + contact.phone + "\nEMAIL:" + contact.email + "\nEND:VCARD";
  var blob = new Blob([vcard], { type: "text/vcard" });
  var url = URL.createObjectURL(blob);
  
  const newLink = document.createElement('a');
  newLink.download = contact.name + ".vcf";
  newLink.textContent = contact.name;
  newLink.href = url;
  
  newLink.click();

  // window.close();
});

Cela fonctionne, mais ce code sur les téléphones Android télécharge d'abord la vcard, puis l'utilisateur doit cliquer sur télécharger pour importer. Ce que je veux, c'est que lorsque l'utilisateur accède à cette page, mes contacts soient automatiquement enregistrés sur Android sans télécharger de fichiers. (Sur IOS, ce n'est pas un problème car lorsque les utilisateurs visitent ce site, ils sont automatiquement redirigés vers importer des contacts)

注意: 我之前已经播过一个带有二维码的示例。当我扫描二维码时,他们将我重定向到导入联系人,我需要做的只是在手机上单击 save

Je veux la même chose que https://www.qr-code-generator.com en cliquant sur l'onglet vCard. Mais au rechargement de la page, le QR code n'est pas scanné

P粉722409996P粉722409996206 Il y a quelques jours393

répondre à tous(1)je répondrai

  • P粉116631591

    P粉1166315912024-03-27 09:15:37

    Vous devez ajouter une méthode API de partage Web Selon votre code, vous pouvez ajouter navigator.share() Si les conditions sont telles que vérifier si cette API est prise en charge par le navigateur, d'autres liens de téléchargement seront automatiquement. téléchargé.

    J'aime le code mis à jour ci-dessous :-

    window.addEventListener("load", function () {
      // Contact Information
      var contact = {
        ...
      };
      // create a vcard file
      var vcard = "BEGIN:VCARD\nVERSION:3.0\n"
        + "N:" + contact.name + ";;;\n"
        + "FN:" + contact.name + "\n"
        + "TEL;CELL:" + contact.phone + "\n"
        + "TEL;CELL:" + contact.mobile + "\n"
        + "EMAIL;HOME:" + contact.email + "\n"
        + "ADR;HOME:" + contact.address + "\n"
        + "ORG;WORK:" + contact.organization + "\n"
        + "TITLE:" + contact.title + "\n"
        + "URL:" + contact.url + "\n"
        + "NOTE:" + contact.notes + "\n"
        + "END:VCARD";  
      
      // var vcard = "BEGIN:VCARD\nVERSION:4.0\nFN:" + contact.name + "\nTEL;TYPE=work,voice:" + contact.phone + "\nEMAIL:" + contact.email + "\nEND:VCARD";
      var blob = new Blob([vcard], { type: "text/vcard" });
      var url = URL.createObjectURL(blob);
      
      if (navigator.share) {
      
        navigator.share({
        
          title: 'New Contacts',
          text: 'Save contacts',
          files: [new File([blob], 'newcontact.vcf', { type: 'text/vcard' })],
        }).then(() => { });
    
      } else {
          const newLink = document.createElement('a');
          newLink.download = contact.name + ".vcf";
          newLink.textContent = contact.name;
          newLink.href = url;
    
          newLink.click();
    
          // window.close();
      
      }
    });

    répondre
    0
  • Annulerrépondre