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.
ChatGPT & Codex + Kontakte
Freunde-finden-Bildschirme, Gruppeneinladungen und Apps zum Aufteilen von Rechnungen wollen oft ans Adressbuch. In einer WebViewGold-App fragt deine ChatGPT & Codex-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 ChatGPT & Codex ein, um die Web-App-Seite umzusetzen. Prüfe das Ergebnis, veröffentliche und teste dann in der WebViewGold-App.
Prompt für Codex: Implementiere datenschutzfreundlichen Kontaktzugriff für den WebViewGold-App-Wrapper und öffne einen Pull Request. 1) Füge einen Kontakte-Helper hinzu: requestPermission() navigiert zu requestcontactpermission://, und readContacts() setzt window.contacts = undefined, navigiert zu readcontacts:// und löst nach Abfragen alle 100 ms für bis zu 5 Sekunden mit dem Objekt aus Namen und Nummern oder mit null auf; beides nur, wenn navigator.userAgent meinen eigenen WebViewGold-Token enthält. 2) Füge vor der Berechtigungsabfrage einen Erklärbildschirm hinzu und einen Button zu settingsapp://, wenn der Zugriff verweigert wurde. 3) Baue eine durchsuchbare Auswahlliste ohne Vorauswahl und ohne „Alle auswählen“. 4) Füge einen Server-Endpunkt hinzu, der bis zu 2000 normalisierte Nummern mit users abgleicht, nur Treffer zurückgibt, nichts speichert oder loggt und ein Rate-Limit pro Nutzer hat. 5) Verschick Einladungen über shareapp://message?=TEXT&url=INVITE_URL, immer nur an einen Kontakt. 6) Füge Tests hinzu und halte diese Regeln in AGENTS.md fest.

WebViewGold hat uns die kürzeste und effizienteste Time-to-Market ermöglicht, die jemals möglich war, verglichen mit allen anderen App-Plattformen, die wir in den letzten 5 Jahren ausprobiert haben. Ich weiß nicht, warum ich euch nicht schon früher entdeckt habe, aber ich bin wirklich, wirklich froh, dass ich es getan habe. Wir nähern uns derzeit fast 6000 App-Downloads im iOS App Store & Google Play Store ohne Probleme!
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 ChatGPT & Codex-Projekt passiert das in Deine eigene API oder Serverless Functions.
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.