Freunde finden, die die App schon nutzen
Gleich normalisierte Telefonnummern mit den Accounts in deinem Backend ab und zeig „3 deiner Kontakte sind schon hier“ statt einer leeren Freundesliste.
v0 + Kontakte
Freunde-finden-Bildschirme, Gruppeneinladungen und Apps zum Aufteilen von Rechnungen wollen oft ans Adressbuch. In einer WebViewGold-App fragt deine v0-App mit requestcontactpermission:// nach der Berechtigung und bekommt nach readcontacts:// Namen und Telefonnummern als JSON in der Variable contacts. Der Code ist in Minuten geschrieben; ob die App das Review besteht, entscheidet, wie du die Daten nutzt.
Ab $109 einmalig pro Plattform, oder unser Team erledigt alles ab $698.
Gleich normalisierte Telefonnummern mit den Accounts in deinem Backend ab und zeig „3 deiner Kontakte sind schon hier“ statt einer leeren Freundesliste.
Der Nutzer wählt einen Kontakt, die App bereitet eine persönliche Einladung vor und öffnet das Share Sheet. Keine Masseneinladungen, keine Überraschungen für den Empfänger.
CRM-, Buchungs- und Team-Apps können einen neuen Datensatz aus einem gewählten Kontakt vorausfüllen, statt Nutzer Namen und Nummern abtippen zu lassen.
Ein einfacher Einladungslink über das native Share Sheet (shareapp://) braucht überhaupt keine Berechtigung und ist der leichtere Weg durchs Review. Frag nur nach Kontakten, wenn Abgleich oder Auswahl echten Mehrwert bringen.
Füge das in v0 ein, um die Web-App-Seite umzusetzen. Prüfe das Ergebnis, veröffentliche und teste dann in der WebViewGold-App.
Baue Kontaktzugriff für den WebViewGold-App-Wrapper in diese Next.js-App ein. 1) Erstelle components/contacts-picker.tsx als Client Component; wenn navigator.userAgent WebViewGold enthält, navigiert ihr Weiter-Button (angezeigt nach einer kurzen Erklärung) zu requestcontactpermission://, und ein Button „Kontakte laden“ setzt window.contacts = undefined, navigiert zu readcontacts:// und fragt window.contacts bis zu 5 Sekunden lang alle 100 ms ab. 2) Behandle null als fehlende Berechtigung und biete einen Button zu settingsapp:// an. 3) Rendere eine durchsuchbare Liste ohne Vorauswahl und ohne „Alle auswählen“. 4) Erstelle eine Server Action matchContacts(numbers: string[]), die die Session prüft, höchstens 2000 normalisierte E.164-Nummern akzeptiert, sie mit users.phone vergleicht, nichts speichert und gefundene Anzeigenamen zurückgibt; ergänze ein Rate-Limit pro Nutzer. 5) Einladen-Buttons öffnen shareapp://message?=TEXT&url=INVITE_URL, wobei der Text vor dem Senden angezeigt wird. 6) Zeig außerhalb der App nur den Einladungslink.

Ich bin sehr glücklich, dass ich diese App gekauft habe! Extrem einfach und großartige Dokumentation. Ich stand in Kontakt mit dem Kundenservice, sie antworteten sehr schnell und sehr freundlich. Sie lösten meine Frage innerhalb eines Tages. 10/10 würde ich empfehlen.
Eine Stunde für den Code, etwas länger für die Datenschutztexte.
Android: Ergänze android.permission.READ_CONTACTS in der AndroidManifest.xml, wie es die WebViewGold-Doku verlangt. iOS: Die Nutzungsbeschreibung für Kontakte in der Info.plist muss den Grund nennen, zum Beispiel „um dir zu zeigen, welche deiner Kontakte die App schon nutzen“.
Zeig einen eigenen Bildschirm, der den Nutzen erklärt, mit einem Weiter-Button, und navigiere dann zu requestcontactpermission://. Frag nie beim ersten Start oder bevor der Nutzer das Feature erreicht.
Nach der Berechtigung navigierst du zu readcontacts://. WebViewGold füllt die globale Variable contacts mit einem Objekt aus Namen und Arrays von Telefonnummern; ohne Berechtigung ist sie null.
Zeig eine durchsuchbare Liste ohne Vorauswahl und ohne Button „Alle auswählen“, und zeig den genauen Einladungstext, bevor irgendetwas verschickt wird.
Für den Freunde-Abgleich normalisierst du die Nummern und schickst sie für einen einmaligen Vergleich an dein Backend; nicht gefundene Nummern speicherst du nicht. Für Einladungen schickst du gar nichts: Öffne das Share Sheet.
Zwei getrennte Fingertipps: einer für die Berechtigung, einer zum Laden der Liste. Die Variable contacts kommt asynchron an. Ein Freunde-Abgleich, falls du ihn brauchst, läuft serverseitig und nur für angemeldete Nutzer; in deinem v0-Projekt passiert das in Next.js Route Handlers und Server Actions, Postgres über Neon oder Supabase.
var IN_APP = navigator.userAgent.indexOf("WebViewGold") !== -1; // dein eigener User-Agent-Token
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); }
})();
}
// Tipp 1: nach deinem eigenen Erklärbildschirm
function askForContacts() {
if (!IN_APP) { showInviteLink(); return; }
window.location.href = "requestcontactpermission://";
}
// Tipp 2: "Meine Kontakte anzeigen"
function loadContacts() {
window.contacts = undefined;
window.location.href = "readcontacts://";
waitFor("contacts", 5000, function (list) {
if (!list) { showPermissionHint(); return; } // null = keine Berechtigung
// Format: { "John Appleseed": ["888-555-5512", "888-555-1212"], ... }
var people = Object.keys(list).map(function (n) { return { name: n, phones: list[n] }; });
renderPicker(people); // nichts vorausgewählt, kein "Alle auswählen"
});
}
// Früher abgelehnt? Lass den Nutzer es in den Einstellungen ändern
function openAppSettings() { window.location.href = "settingsapp://"; }Ein JSON-Objekt mit den Kontaktnamen als Schlüsseln und jeweils einem Array von Telefonnummern, gespeichert in der globalen Variable contacts. Ohne Berechtigung ist die Variable null. E-Mail-Adressen, Postanschriften und Fotos sind nicht Teil des dokumentierten Formats.
Nicht für das Lesen an sich, aber oft für das Wie. Frag im Kontext mit einer klaren Nutzungsbeschreibung, lass Nutzer einzelne Personen auswählen, lade nie alle auf einmal ein und speichere das Adressbuch nicht auf deinem Server, außer das Feature braucht es und deine Datenschutzerklärung sagt es.
Oft nicht. Ein Share Sheet mit persönlichem Einladungslink erreicht WhatsApp, Nachrichten und E-Mail ganz ohne Berechtigung und ist im Review viel leichter zu erklären. Nutze den Kontaktzugriff, wenn du Freunde abgleichst oder Gruppen aus vorhandenen Kontakten bildest.
readcontacts:// lässt die Variable contacts dann auf null. Biete stattdessen den Einladungslink an, und wenn der Nutzer es sich später anders überlegt, öffne mit settingsapp:// die App-Einstellungen, damit er den Zugriff erlauben kann.
Gleiches Ergebnis, unterschiedlich viel Arbeit auf deiner Seite. Alle drei kommen mit Genehmigungsgarantie und 24/7 Support von echten Menschen.
$109 pro Plattform, einmalig
Die WebViewGold-Lizenz: ein fertiges Xcode- oder Android-Studio-Projekt. URL einfügen, Name und Icon setzen, Features einschalten, bauen und einreichen. Kostenlose Updates für immer.
Pakete auf der Hauptseite ansehen$349 pro Lizenz, einmaliges Add-on
Kein Mac, kein Xcode, kein Android Studio: Du konfigurierst im Browser, wir bauen beide Apps in der Cloud und übergeben sie an App Store Connect und die Play Console.
So funktioniert der Cloud Builder Kostenlose Demo ausprobieren$698 pro Plattform $798
Schick uns deine URL und dein Icon. Unser Team konfiguriert, baut und liefert deine App innerhalb von 72 Stunden, White-Label, inklusive Quellprojekten. Beide Plattformen für $1,158.
Full-Service-Details Powered byWinter-Sale-Preise gültig bis 31. Dezember 2026.
App Store & Google Play Genehmigungsgarantie – oder Geld zurück innerhalb von 14 Tagen
Lieber abgeben? Full Service: Wir konfigurieren, bauen und liefern innerhalb von 72 Stunden, ab $698 pro Plattform. Fragen? Chatte mit uns – 24/7.
Erstattungen erfolgen zu den in unseren FAQ genannten Bedingungen: eine nicht inhaltsbedingte Ablehnung durch Apple und/oder Google, geltend gemacht innerhalb von 14 Tagen nach dem Kauf.