WebKit-interner Content-Filter via ManagedSettingsStore().webContent als stilles Sicherheitsnetz. Blockt eine kuratierte, laenderabhaengige Top- Gambling-Domain-Liste plus systemseitig Adult-Content (.auto-Variante). Braucht NUR Family Controls — kein MDM, kein neues Entitlement, keine Config-Plugin-Aenderung. - gambling-domains.json: gebuendelte Starter-Liste (DE/GB/FR), je <=50 Domains (Apple-Hartlimit), klar als STARTER markiert. Via Podspec- resource_bundles ins App-Bundle gepackt. - applyWebContentFilter / clearWebContentFilter: zwei native AsyncFunctions. Land via Locale.current.region, iOS 16+ gegated, FC-Auth vorausgesetzt. - JS-Bridge (Module-Decl, types, web-stub, lib/protection.ts) + Actions im useProtectionState-Hook. getDeviceState liefert webContentFilter-Layer mit. KEINE Auto-Trigger-Logik — Layer 2 ist vorerst nur explizit aufrufbare Capability. Siehe TODO(layer2-gating) im Swift-Modul und lib/protection.ts. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
36 lines
1.5 KiB
Ruby
36 lines
1.5 KiB
Ruby
Pod::Spec.new do |s|
|
|
s.name = 'RebreakProtection'
|
|
s.version = '0.1.0'
|
|
s.summary = 'ReBreak unified protection — NEFilter + Family Controls.'
|
|
s.description = 'Single native module that wraps NEFilterDataProvider + AuthorizationCenter + ManagedSettings for the ReBreak gambling-recovery app.'
|
|
s.author = 'ReBreak'
|
|
s.homepage = 'https://rebreak.org'
|
|
s.license = { :type => 'Proprietary' }
|
|
s.platforms = { :ios => '15.1', :tvos => '15.1' }
|
|
s.swift_version = '5.9'
|
|
s.source = { :git => '' }
|
|
s.static_framework = true
|
|
|
|
s.dependency 'ExpoModulesCore'
|
|
|
|
s.pod_target_xcconfig = {
|
|
'DEFINES_MODULE' => 'YES',
|
|
'SWIFT_COMPILATION_MODE' => 'wholemodule',
|
|
}
|
|
|
|
# NUR Top-Level-Sources ins Hauptmodul. RebreakURLFilter/ enthält Sources
|
|
# für die NetworkExtension — die werden vom Config-Plugin in ein separates
|
|
# Xcode-Target gepackt, NICHT in die Hauptmodul-Lib.
|
|
s.source_files = '*.{h,m,mm,swift,hpp,cpp}'
|
|
s.exclude_files = 'RebreakURLFilter/**/*'
|
|
|
|
# Layer-2 (webContent-Filter): gebündelte Gambling-Domain-Liste pro Land.
|
|
# Wird als eigenständiges Resource-Bundle (RebreakProtectionResources.bundle)
|
|
# ins App-Bundle gepackt — RebreakProtectionModule.swift liest es zur Laufzeit
|
|
# via Bundle(for:)/url(forResource:). Pfad relativ zur Podspec → zeigt auf die
|
|
# von der Aufgabe vorgegebene Quelle apps/rebreak-native/assets/protection/.
|
|
s.resource_bundles = {
|
|
'RebreakProtectionResources' => ['../../../assets/protection/gambling-domains.json']
|
|
}
|
|
end
|