Partager vers votre app Bolt : liens, textes et photos depuis n'importe quelle autre app
Un outil de favoris, une boîte à recettes ou un moodboard ne sert vraiment que si l'enregistrement se fait en un tap. Avec WebViewGold, votre app Bolt apparaît dans la feuille de partage d'iOS et d'Android, et tout ce que l'utilisateur partage (un lien, un extrait de texte, une photo) arrive dans votre app web sous la forme de la variable JavaScript sharedData. Votre code décide de la suite : préremplir un formulaire, l'enregistrer dans votre backend ou ouvrir un éditeur.
Dès $109 en paiement unique par plateforme, ou notre équipe s'occupe de tout dès $698.
Garantie d'approbation – ou remboursement sous 14 jours
Aucun codage requis
Paiement unique, mises à jour gratuites
Support humain 24/7
Conçu en Allemagne depuis 2014 · ISO 27001
9:41
BBolt
Extension de partageDésormais dans votre poche
App Store · Google Play Approuvée
Comment fonctionne la réception de partages
Extension de partage iOS
Les utilisateurs touchent Partager dans Safari, Photos ou une autre app et choisissent la vôtre. WebViewGold transmet le contenu à votre app web dans la variable JavaScript sharedData : textes et liens en texte brut, images sous forme de chaînes Base64.
Intent de partage Android
Décommentez les filtres d'intent préparés dans AndroidManifest.xml (ACTION_SEND pour text/plain et image/*, ACTION_SEND_MULTIPLE pour plusieurs images) et l'icône de l'app apparaît dans la boîte de dialogue de partage d'Android. Même variable, même traitement : sharedData.
Votre app web décide
Vérifiez sharedData au chargement de la page, distinguez liens, textes et images, et dirigez l'utilisateur vers un écran d'enregistrement prérempli. Rien n'est enregistré tant que votre propre code ne l'envoie pas à Supabase, Firebase ou votre propre API : l'utilisateur garde la main.
Prompt pour Bolt
Collez ceci dans Bolt pour implémenter la partie app web. Vérifiez le résultat, publiez, puis testez dans l'app WebViewGold.
Prompt à coller dans Bolt
Créez un parcours « enregistrer depuis la feuille de partage » pour le wrapper d'app WebViewGold. Créez src/lib/shareInbox.ts avec readSharedContent() : si navigator.userAgent contient mon token WebViewGold et que la variable globale sharedData est définie, renvoyez { kind: "link" | "image" | "text", value }, en traitant les valeurs qui commencent par http comme des liens et les longues chaînes Base64 comme des images ; en développement, acceptez aussi un paramètre de requête ?debugShare= pour que je puisse tester dans l'aperçu de Bolt. Appelez-la dans main.tsx après le montage de l'app (une fois immédiatement et une fois après 1 seconde) et redirigez vers /save quand quelque chose est arrivé. Sur /save, affichez un aperçu : pour les liens, appelez une Netlify Function link-preview qui récupère le titre et l'image de la page côté serveur ; pour les images, décodez le Base64 en Blob, réduisez l'image à 1600 px maximum sur un canvas et affichez-la. Enregistrer envoie l'image dans le bucket Supabase Storage shares (chemin user_id/uuid.jpg) et insère une ligne dans une table saves avec row-level security. Mémorisez la valeur traitée dans sessionStorage pour qu'un rechargement ne l'enregistre pas deux fois. Si l'utilisateur est déconnecté, gardez l'élément dans sessionStorage et reprenez après la connexion.
WebViewGold nous a permis d'avoir le temps de mise sur le marché le plus court et le plus efficace jamais possible parmi toutes les autres plates-formes d'application que nous avons essayées au cours des 5 dernières années. Je ne sais pas pourquoi je ne vous ai pas découvert plus tôt, mais je suis vraiment, vraiment content de l'avoir fait. Nous approchons actuellement les 6000 téléchargements d'application sur l'App Store iOS et Google Play Store sans aucun problème!
Ce que les gens partagent vers des apps comme la vôtre
Une cible de partage mérite sa place quand un seul tap enregistre ce que l'utilisateur devrait sinon copier, changer d'app et coller. Les usages typiques :
À lire plus tard et favoris
Partagez un article depuis Safari ou Chrome : l'app récupère le titre et l'image d'aperçu côté serveur, l'utilisateur ajoute un tag et touche Enregistrer.
Recettes, lieux, produits
Un lien de recette, un restaurant depuis une app de cartes, une page produit : enregistrés dans une collection, un plan de voyage ou une liste d'envies plutôt que dans un fichier de notes en désordre.
Des photos dans un flux de travail
La photo d'un reçu dans un suivi de dépenses, une capture d'écran dans un rapport de bug, la photo d'une pièce dans un moodboard ou un inventaire. L'image arrive en Base64, prête à être envoyée.
Offres d'emploi et prospects
Partagez une offre d'emploi ou un lien de profil vers un tracker ou un CRM et arrivez sur un formulaire « Nouvelle entrée » prérempli, avec l'URL déjà analysée.
Citations et extraits
Un texte surligné dans n'importe quelle app devient une note, une fiche de révision ou un prompt pour votre fonctionnalité d'IA, avec le lien source joint quand le texte partagé en contient un.
Ajouter une cible de partage à une app Bolt
Environ une heure, surtout pour l'écran d'enregistrement de votre app web.
Choisissez une seule action pour le partage
Décidez de ce que fait un partage dans votre app Bolt : enregistrer un lien, joindre une photo, commencer une note. Une action claire convertit mieux qu'un menu d'options.
iOS : activez l'extension de partage
Activez l'extension de partage dans le projet Xcode WebViewGold en suivant la marche à suivre (Documentation iOS), puis installez le build sur un vrai iPhone. La feuille de partage ne liste que les extensions des apps installées : le simulateur n'est donc pas un bon test.
Android : décommentez les filtres d'intent
Dans AndroidManifest.xml, ne gardez que les filtres que vous traitez vraiment : text/plain pour les liens et le texte, image/* pour une photo, SEND_MULTIPLE pour plusieurs (Documentation Android). Une cible de partage qui accepte des images mais les ignore fait mauvaise impression dès le départ.
Lisez sharedData dans Bolt
Vérifiez typeof sharedData !== "undefined" au chargement, puis une nouvelle fois après un court délai. Les valeurs qui commencent par http sont des liens ; les longues chaînes Base64 sont des images (les données JPEG commencent par /9j/, les PNG par iVBORw0KGgo) ; tout le reste est du texte, qui contient parfois une URL.
Conservez le brouillon pendant la connexion
Si l'utilisateur n'est pas connecté, stockez l'élément partagé dans sessionStorage, faites-le passer par votre parcours de connexion et restaurez ensuite l'écran d'enregistrement. Ne perdez jamais un partage en silence.
Enregistrez et confirmez
Décodez les images en Blob, redimensionnez-les et envoyez-les, récupérez les titres des liens sur le serveur et enregistrez l'élément dans Supabase, Firebase ou votre propre API, puis affichez un état de réussite clair (un appel successhaptic:// tombe juste ici).
Un gestionnaire sharedData pour votre app web
Indépendant de tout framework ; appelez checkSharedContent() une fois votre app montée. Remplacez YourAppToken par le user agent personnalisé défini dans Config.swift (useragent_iphone, useragent_ipad) et Config.java (USER_AGENT).
javascript
var inApp = navigator.userAgent.indexOf("YourAppToken") !== -1;
function classifyShared(raw) {
var value = String(raw).trim();
var b64 = value.replace(/^data:image\/[a-z+]+;base64,/i, "");
if (/^https?:\/\//i.test(value)) return { kind: "link", url: value };
if (b64.length > 1000 && /^[A-Za-z0-9+\/=\s]+$/.test(b64.slice(0, 4000))) {
return { kind: "image", base64: b64, mime: b64.indexOf("iVBORw0KGgo") === 0 ? "image/png" : "image/jpeg" };
}
var link = value.match(/https?:\/\/\S+/);
return { kind: "text", text: value, url: link ? link[0] : null };
}
function base64ToBlob(b64, mime) {
var bin = atob(b64.replace(/\s/g, ""));
var bytes = new Uint8Array(bin.length);
for (var i = 0; i < bin.length; i++) bytes[i] = bin.charCodeAt(i);
return new Blob([bytes], { type: mime });
}
function checkSharedContent() {
if (!inApp || typeof sharedData === "undefined" || !sharedData) return false;
var fingerprint = String(sharedData).length + ":" + String(sharedData).slice(0, 64);
if (sessionStorage.getItem("lastShare") === fingerprint) return false; // déjà traité
sessionStorage.setItem("lastShare", fingerprint);
sessionStorage.setItem("pendingShare", JSON.stringify(classifyShared(sharedData)));
window.location.href = "/save"; // votre écran d'enregistrement prérempli
return true;
}
window.addEventListener("load", function () {
if (!checkSharedContent()) setTimeout(checkSharedContent, 1000);
});
Ce que regardent les examinateurs
Une cible de partage fait partie des intégrations natives qu'un onglet Safari ne peut pas offrir sur iOS, ce qui en fait un argument solide pour la guideline 4.2. Quelques règles l'accompagnent.
4.2
Fonctionnalités minimales
Montrez le parcours de partage sur une capture d'écran et mentionnez-le dans les notes de validation, en anglais pour l'examinateur (« Share a link from Safari to save it »). Les examinateurs ne prennent en compte que les fonctionnalités qu'ils trouvent.
4.4
Extensions
Les extensions doivent offrir une vraie fonctionnalité, être décrites fidèlement dans vos textes marketing et ne contenir ni marketing, ni publicité, ni achats intégrés. Gardez le parcours de partage sous la forme d'une simple action d'enregistrement.
2.5.16
En lien avec votre app
Les extensions doivent se rapporter au contenu et aux fonctionnalités de l'app. Une app de recettes qui accepte des liens de recettes est cohérente ; une cible de partage qui ouvre simplement la page d'accueil ne l'est pas.
5.1.1
Les données que vous recevez
Les photos et les liens partagés peuvent contenir des données personnelles. N'envoyez que ce que l'utilisateur a confirmé, décrivez-le dans votre politique de confidentialité et déclarez-le dans App Privacy (photos, contenu utilisateur) ainsi que dans le formulaire Sécurité des données de Google Play.
Questions fréquentes
L'app peut-elle recevoir des partages sur iOS et sur Android ?
Oui. iOS utilise une extension de partage et Android des intents de partage ; dans les deux cas, WebViewGold transmet le contenu à votre app web dans la même variable JavaScript, sharedData : un seul gestionnaire couvre donc les deux plateformes.
Quels types de contenu les utilisateurs peuvent-ils partager vers l'app ?
Du texte et des liens, ainsi que des images, qui arrivent sous forme de chaînes Base64. Android dispose aussi d'un filtre d'intent préparé pour plusieurs images à la fois. Les autres types de fichiers, comme les PDF, ne font pas partie de l'API documentée.
Une app web ou une PWA peut-elle le faire sans le wrapper natif ?
Sur Android, une PWA installée peut s'enregistrer comme cible de partage via la Web Share Target API dans les navigateurs basés sur Chromium. Sur iOS, Safari n'offre aucun équivalent pour les apps web : une extension de partage native est donc le moyen d'apparaître dans la feuille de partage de l'iPhone.
Que se passe-t-il si l'utilisateur n'est pas connecté au moment du partage ?
Gardez l'élément partagé dans sessionStorage, faites passer l'utilisateur par la connexion et ramenez-le à l'écran d'enregistrement avec le contenu toujours là. Perdre un partage après la connexion est le bug le plus fréquent de ce parcours.
Une extension de partage garantit-elle l'approbation au titre de la guideline 4.2 ?
Aucune fonctionnalité ne le fait à elle seule. C'est une capacité native forte et visible ; combinée aux notifications push, à la gestion hors ligne et à une mise en page digne d'une app, elle montre que votre app Bolt est plus qu'un site web.
Trois façons de mettre votre app dans les stores
Même résultat, charge de travail différente de votre côté. Les trois formules incluent la garantie d'approbation et le support humain 24/7.
Faites-le vous-même
$109 par plateforme, paiement unique
La licence WebViewGold : un projet Xcode ou Android Studio prêt à l'emploi. Collez votre URL, définissez le nom et l'icône, activez les fonctionnalités, compilez et soumettez. Mises à jour gratuites à vie.
Ni Mac, ni Xcode, ni Android Studio : configurez dans le navigateur, nous compilons les deux apps dans le cloud et les transmettons à App Store Connect et à la Play Console.
Envoyez-nous votre URL et votre icône. Notre équipe configure, compile et livre votre app sous 72 heures, en marque blanche, projets sources inclus. Les deux plateformes pour $1,158.
Les remboursements sont accordés aux conditions indiquées dans notre FAQ : un refus non lié au contenu par Apple et/ou Google, demandé dans les 14 jours suivant l'achat.