Retrouver les amis qui utilisent déjà l'app
Comparez les numéros de téléphone normalisés avec les comptes de votre backend et affichez « 3 de vos contacts sont déjà là » au lieu d'une liste d'amis vide.
ChatGPT & Codex + contacts
Les écrans « Retrouvez vos amis », les invitations de groupe et les apps de partage de dépenses veulent souvent accéder au carnet d'adresses. Dans une app WebViewGold, votre app ChatGPT & Codex demande l'autorisation avec requestcontactpermission:// et reçoit les noms et numéros de téléphone en JSON dans la variable contacts après readcontacts://. Le code prend quelques minutes ; c'est l'usage que vous faites des données qui décide si l'app passe l'examen.
Dès $109 en paiement unique par plateforme, ou notre équipe s'occupe de tout dès $698.
Comparez les numéros de téléphone normalisés avec les comptes de votre backend et affichez « 3 de vos contacts sont déjà là » au lieu d'une liste d'amis vide.
L'utilisateur choisit un contact, l'app prépare une invitation personnelle et ouvre la feuille de partage. Pas d'invitations en masse, pas de surprise pour le destinataire.
Les apps de CRM, de réservation et d'équipe peuvent préremplir une nouvelle fiche à partir d'un contact choisi, au lieu de faire retaper noms et numéros.
Un simple lien d'invitation via la feuille de partage native (shareapp://) ne demande aucune autorisation et passe bien plus facilement l'examen. Ne demandez l'accès aux contacts que si la mise en relation ou la sélection apporte une vraie valeur.
Collez ceci dans ChatGPT & Codex pour implémenter la partie app web. Vérifiez le résultat, publiez, puis testez dans l'app WebViewGold.
Prompt pour Codex : Implémentez un accès aux contacts respectueux de la vie privée pour le wrapper d'app WebViewGold et ouvrez une pull request. 1) Ajoutez un helper de contacts : requestPermission() navigue vers requestcontactpermission:// et readContacts() définit window.contacts = undefined, navigue vers readcontacts:// et se résout avec l'objet associant les noms aux numéros, ou null, après une interrogation toutes les 100 ms pendant 5 secondes au maximum ; les deux uniquement quand navigator.userAgent contient mon token WebViewGold personnalisé. 2) Ajoutez un écran d'explication avant la demande d'autorisation et un bouton settingsapp:// quand l'accès est refusé. 3) Construisez un sélecteur avec recherche, sans présélection ni Tout sélectionner. 4) Ajoutez un endpoint serveur qui compare jusqu'à 2000 numéros normalisés aux utilisateurs, ne renvoie que les correspondances, ne stocke et ne journalise rien, et dont le débit est limité par utilisateur. 5) Envoyez les invitations via shareapp://message?=TEXT&url=INVITE_URL, un contact à la fois. 6) Ajoutez des tests et consignez ces règles dans AGENTS.md.

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!
Une heure pour le code, un peu plus pour les textes de confidentialité.
Android : ajoutez android.permission.READ_CONTACTS à AndroidManifest.xml, comme l'exige la documentation WebViewGold. iOS : le texte d'explication de l'accès aux contacts dans Info.plist doit dire pourquoi, par exemple « pour vous montrer lesquels de vos contacts utilisent déjà l'app ».
Affichez votre propre écran qui explique le bénéfice, avec un bouton Continuer, puis naviguez vers requestcontactpermission://. Ne demandez jamais l'accès au premier lancement ni avant que l'utilisateur atteigne la fonctionnalité.
Une fois l'autorisation accordée, naviguez vers readcontacts://. WebViewGold remplit la variable globale contacts avec un objet qui associe des noms à des tableaux de numéros de téléphone ; sans autorisation, elle vaut null.
Affichez une liste avec recherche, sans rien de présélectionné ni bouton Tout sélectionner, et montrez le texte exact de l'invitation avant tout envoi.
Pour retrouver des amis, normalisez les numéros et envoyez-les à votre backend pour une comparaison ponctuelle ; ne conservez pas les numéros sans correspondance. Pour les invitations, n'envoyez rien du tout : ouvrez la feuille de partage.
Deux taps distincts : un pour l'autorisation, un pour charger la liste. La variable contacts arrive de façon asynchrone. La recherche d'amis, si vous en avez besoin, s'exécute côté serveur et uniquement pour les utilisateurs connectés ; dans votre projet ChatGPT & Codex, cela se passe ici : Votre propre API ou des fonctions serverless.
var IN_APP = navigator.userAgent.indexOf("WebViewGold") !== -1; // votre token de user agent personnalisé
function waitFor(name, timeoutMs, done) {
var start = Date.now();
(function check() {
if (typeof window[name] !== "undefined") { done(window[name]); }
else if (Date.now() - start < timeoutMs) { setTimeout(check, 100); }
else { done(undefined); }
})();
}
// Tap 1 : après votre propre écran d'explication
function askForContacts() {
if (!IN_APP) { showInviteLink(); return; }
window.location.href = "requestcontactpermission://";
}
// Tap 2 : « Afficher mes contacts »
function loadContacts() {
window.contacts = undefined;
window.location.href = "readcontacts://";
waitFor("contacts", 5000, function (list) {
if (!list) { showPermissionHint(); return; } // null = pas d'autorisation
// forme : { "John Appleseed": ["888-555-5512", "888-555-1212"], ... }
var people = Object.keys(list).map(function (n) { return { name: n, phones: list[n] }; });
renderPicker(people); // rien de présélectionné, pas de « Tout sélectionner »
});
}
// Accès refusé plus tôt ? Laissez l'utilisateur le modifier dans les Réglages
function openAppSettings() { window.location.href = "settingsapp://"; }Un objet JSON indexé par nom de contact, chacun avec un tableau de numéros de téléphone, stocké dans la variable globale contacts. Sans autorisation, la variable vaut null. Les adresses e-mail, les adresses postales et les photos ne font pas partie du format documenté.
Pas pour le fait de les lire, mais souvent pour la manière. Demandez l'accès en contexte avec un texte d'explication clair, laissez les utilisateurs choisir des personnes une par une, n'invitez jamais tout le monde d'un coup, et ne conservez pas le carnet d'adresses sur votre serveur, sauf si la fonctionnalité l'exige et que votre politique de confidentialité le mentionne.
Souvent, non. Une feuille de partage avec un lien d'invitation personnel atteint WhatsApp, Messages et l'e-mail sans aucune autorisation, et c'est bien plus simple à expliquer lors de l'examen. Utilisez l'accès aux contacts quand vous retrouvez des amis ou constituez des groupes à partir de contacts existants.
readcontacts:// laisse alors la variable contacts à null. Proposez plutôt le lien d'invitation et, si l'utilisateur change d'avis plus tard, ouvrez les réglages de l'app avec settingsapp:// pour qu'il puisse accorder l'accès.
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.
$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.
Voir les offres sur la page principale$349 par licence, extension en paiement unique
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.
Comment fonctionne le Cloud Builder Essayer la démo gratuite$698 par plateforme $798
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.
Détails du Full Service Propulsé parPrix Soldes d'hiver valables jusqu'au 31 décembre 2026.
Garantie d'approbation App Store & Google Play – ou remboursement sous 14 jours
Vous préférez déléguer ? Full Service : nous configurons, compilons et livrons sous 72 heures, dès $698 par plateforme. Des questions ? Chattez avec nous 24/7.
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.