Family Controls

RSS for tag

Prevent access to the Screen Time API without guardian approval and provide opaque tokens that represent apps and websites.

Posts under Family Controls tag

194 Posts
Sort by:
Post not yet marked as solved
1 Replies
5.1k Views
I believe I deserve the bounty hunter price for this one. Procedure on how to bypass screen time and access adult websites. This method will work on iPad, iPhone, MacBook Pro, iMac, MiniMac Line 1 - Turn on screen time Line 2 - Set a passcode  Line 3 iPhone/iPad - Go to Content & Privacy Restrictions > Content Restrictions > Web Content > Limit Adult Websites Line 3 -- iMac/MacBookPro/miniSystem Preferences > Screen Time > Content Restrictions > Web Content > Limit Adult Websites By completing lines 1-3 the device won't be able to access any adult websites on Safari ONLY. The way to bypass this is to download google chrome on the device, after the download is complete navigate to the search engine. Line 4 - Search for "*******", or  "xnxx", or Xvids on google chrome -- if you try to enter the websites it won't allow you on the iPad and iPhone. But it will allow you to enter on iMac, MacBook Pro and MiniMac (If you toggle between Videos and Images on google search you can see explicit content which or not blocked). Which proves that the Screen Time does not work on Chrome, if you try Safari it won't allow you to enter or see any adult content. To bypass on the iPhone and iPad Try Line 5 Line 5 - To bypass on the iPhone and iPad search on chrome "xnxx Japan", "xnxx China", "xnxx India", "xnxx arabic" and toggle to the video or image tab.  The goal here is to find a video or image that will allow to enter the website base on their native language of upload. This is not allow you to enter if it is in English or if it was upload in America.  To show that this works on the iPhone or iPad redo 1-Line 3 and turn Screen Time on and Blah Blah Blah Line 6 - Go to chrome search for "xnxx Japan" and toggle to the video tab  Line 7 - Click on the first video (which was uploaded Jun 15 2018) if it does not let you in restart the divide and try again and it should work. Try second Video. Try "*******".                                                                !!!!SCREEN TIME IS BROKEN!!!! Nick from Apple Product Security told me I and quote  " Features like Screen Time are designed to provide parents with the tools to understand and manage their children’s device usage. Screen Time is not intended to protect a device against manipulation." Which makes SCREEN TIME a complete JOOKE Fix the bug and pay me for the bounty!  Ps... Here is a Solution on How to prevent Children from watch ****  Line 8 - Go to Content & Privacy Restrictions > Content Restrictions > Web Content > Limit Adult Websites Line 9 - Under Never Allow click on it and type the physical URL address  https://www.xnxx.com https://www.*******.com Blah Blah Blah Parental Advisory Explicit Content
Posted
by
Post marked as solved
6 Replies
2.8k Views
Hello! Does anybody know release date of "Family Control" capability for Distribution? iOS 15 was released, but "Family Control" is still available only for Development Distribution: We can't create Distribution provision profile for testing via TestFlight right now. Furthermore we can't proof that Content Filter Providers will be work on authorized Family Control devices without any restrictions and additional setup (see Content Filter Providers with Family Control app)
Posted
by
Post not yet marked as solved
18 Replies
6.4k Views
With "Automatically Manage Signing" enabled in Signing & Capabilities I got a message when uploading to the App Store complaining that my provisioning profile was missing Family Control capabilities. I do have the capability enabled in XCode, and I can deploy directly to devices to see that the app works correctly (that is, it has the capability). Further, I can see the same capability checked in the App Id under my developer profile. Further, if I generate a profile manually it claims to include Family Controls in the info screen. But still it won't let me upload the app. I've tried: deleting all automatically generated profiles and regenerating them. adding and removing the capability in Xcode and in the App Id generating a manual provisioning profile and downloading it (this one complains about the missing capability when I download it). Any ideas?
Posted
by
Post not yet marked as solved
4 Replies
2.2k Views
Hello, The purpose of "Screen Time Passcode" under Settings/Screen Time is to protect Screen Time preferences and it is asked every time the user updates Downtime, App Limits, Content & Privacy Restrictions and so on. But the private passcode is not requested if the user disables Screen Time for a particular app (only Face ID or phone passcode is requested, but not the private Screen Time passcode). I think this is a mistake, I think the purpose of a private Screen Time passcode is to protect all settings, including apps that use this API, right? Is there any solution to this? Thank you.
Posted
by
Post marked as solved
4 Replies
2.5k Views
Hi folks! Please help me to clarify some things related to Screen Time API. What the keys differences between individual and child authorization? With individual type of auth user can do sign-out from iCloud and delete the app. What else differentiate this type of users? Can we use DeviceActivityEvent for remote control with individual auth? Can the parental or guardian see/get the statistic of apps usage? Is the individual auth available to all users or just those who are in the Apple's family? I'll really appreciate any help and answer! Thank you in advance!
Post marked as solved
3 Replies
2.7k Views
Hi all! I'm thankful to Kmart for his answers related to Screen Time API features iOS 15 / iOS 16. That really helpful! Please, help me to clarify a few more things... As I read here in the comment ManagedSettings has two type of restrictions, shielding and blocking. Is blocking type of restriction available for users with individual type of auth? If the answer on the first question is "No", does that mean that individual user will be able just to skip the shielding screen and continue to use apps? If individual user can skip shielding, will it be allowed to do it with a passcode or without, if the passcode wasn't set for Screen Time in the phone settings? I'll really appreciate any help and answer! Thank you in advance!
Post not yet marked as solved
3 Replies
2.2k Views
I've requested for family control via: https://developer.apple.com/contact/request/family-controls-distribution & got approved. I've now created new provision files with family control being checked in the identifiers & uploaded manually. Yet, still get: Provisioning profile "redoAppStore" doesn't support the Family Controls capability. Provisioning profile "redoAppStore" doesn't include the com.apple.developer.family-controls entitlement. The family control capability is added to my main target (IOS app) as well. What should I do to get it uploaded?
Posted
by
Post not yet marked as solved
6 Replies
2.1k Views
When I tap on one of the buttons in the ShieldAction extension I want to close the shield and open the parent app instead of the shielded app. Is there any way of doing this using the Screen Time API? class ShieldActionExtension: ShieldActionDelegate {      override func handle(action: ShieldAction, for application: ApplicationToken, completionHandler: @escaping (ShieldActionResponse) -> Void) {     // Handle the action as needed.           let store = ManagedSettingsStore()               switch action {     case .primaryButtonPressed:       //TODO - open parent app       completionHandler(.defer)     case .secondaryButtonPressed:       //remove shield       store.shield.applications?.remove(application)       completionHandler(.defer)         @unknown default:       fatalError()     }   }   }
Posted
by
Post marked as solved
6 Replies
2.6k Views
Hi there! Please help me coupe with next issue... The project was building and archived without any issue. When I added Family Control capability, I started receiving this issue: I set up all certificates, created provisions. Tried to do it automatically through Xcode, did it manually, created .certSigningRequest, changed Xcode to 13 version (I'm using 14) - nothing helped me. Please share your thoughts what can be wrong? I'm not owner of Apple's dev account. I have Admin access rights. Do I need something else? Is Apple requires additional permissions or some requests to use Family Control capability? Thank you in advance! missing com.apple.developer.family-controls / Missing Family Controls from provisioning profile
Post not yet marked as solved
4 Replies
1.6k Views
I've followed along with the Screen Time API demos (https://developer.apple.com/videos/play/wwdc2021/10123/) Also followed along with this guide, which is essentially the same: https://www.folio3.com/mobile/blog/screentime-api-ios/ I'm able to restrict access to apps/categories with the FamilyActivityPicker and FamilyActivitySelection. I can set a DeviceActivitySchedule, and then use DeviceActivityCenter to start monitoring it. I can tell that the schedule is working, because MyMonitor:intervalDidStart() does get called, and it works except for the restricting of apps/categories/webCategories. It's as if MyModel does not have any values set from within MyMonitor. I've confirmed that MyModel does have the correct FamilyActivitySelection apps etc, everywhere else in my Target, before and after the MyMonitor:intervalDidStart() gets called. MyMonitor is in a separate target called MonitorExtension, that I created using the Device Activity Monitor Extension template. But I made sure to set the Target Membership of MyModel to both my main target, and my extension target. I have set NSExtensionPrincipalClass to $(PRODUCT_MODULE_NAME).MyMonitor, as suggested. I have added MyModel.swift to the Compiled Sources in my extensions Build Phases. I have edited my apps build scheme, to make sure the extension target is also built. One more interesting thing is that debugger breakpoints and print statements do not work from within my extension. I've even tried caching a string from within MyMonitor:intervalDidStart, and tried to retrieve it afterwards in my main target, but it is nil. Still, I've confirmed that intervalDidStart was actually called by adding any removing store.application.denyAppInstallation = true, and having it work correctly. I've spent so much time on this problem, any help would be massive.. Here are the files I've referenced: import UIKit import MobileCoreServices import ManagedSettings import DeviceActivity class MyMonitor: DeviceActivityMonitor {   let store = ManagedSettingsStore()   override func intervalDidStart(for activity: DeviceActivityName) {     super.intervalDidStart(for: activity)     let model = MyModel.shared     let applications = model.selectionToDiscourage.applicationTokens     let categories = model.selectionToDiscourage.categoryTokens     let webCategories = model.selectionToDiscourage.webDomainTokens          if applications.isEmpty {      print("No applications to restrict")     } else {      store.shield.applications = applications     }          if categories.isEmpty {      print("No categories to restrict")     } else {      store.shield.applicationCategories = ShieldSettings.ActivityCategoryPolicy.specific(categories, except: Set())     }          if webCategories.isEmpty {      print("No web categories to restrict")     } else {      store.shield.webDomains = webCategories     }     store.dateAndTime.requireAutomaticDateAndTime = true     store.account.lockAccounts = true     store.passcode.lockPasscode = true     store.siri.denySiri = true     store.appStore.denyInAppPurchases = true     store.appStore.maximumRating = 200     store.appStore.requirePasswordForPurchases = true     store.media.denyExplicitContent = true     store.gameCenter.denyMultiplayerGaming = true     store.media.denyMusicService = true     store.application.denyAppInstallation = true   }   override func intervalDidEnd(for activity: DeviceActivityName) {     super.intervalDidEnd(for: activity)     store.shield.applications = nil     store.shield.applicationCategories = nil     store.shield.webDomains = nil     store.dateAndTime.requireAutomaticDateAndTime = false     store.account.lockAccounts = false     store.passcode.lockPasscode = false     store.siri.denySiri = false     store.appStore.denyInAppPurchases = false     store.appStore.maximumRating = 1000     store.appStore.requirePasswordForPurchases = false     store.media.denyExplicitContent = false     store.gameCenter.denyMultiplayerGaming = false     store.media.denyMusicService = false     store.application.denyAppInstallation = false   } } import Foundation import FamilyControls import DeviceActivity import ManagedSettings class MyModel: ObservableObject {   static let shared = MyModel()   let store = ManagedSettingsStore()   private init() {}   var selectionToDiscourage = FamilyActivitySelection() {     willSet {       let applications = newValue.applicationTokens       let categories = newValue.categoryTokens       let webCategories = newValue.webDomainTokens       store.shield.applications = applications.isEmpty ? nil : applications       store.shield.applicationCategories = ShieldSettings.ActivityCategoryPolicy.specific(categories, except: Set())       store.shield.webDomains = webCategories      }   }   func initiateMonitoring(scheduleStart: DateComponents, scheduleEnd: DateComponents) {     let schedule = DeviceActivitySchedule(intervalStart: scheduleStart, intervalEnd: scheduleEnd, repeats: true, warningTime: nil)     print(scheduleStart)     print(scheduleEnd)     let center = DeviceActivityCenter()     do {       try center.startMonitoring(.daily, during: schedule)     }     catch {       print ("Could not start monitoring \(error)")     }          store.dateAndTime.requireAutomaticDateAndTime = false     store.account.lockAccounts = false     store.passcode.lockPasscode = false     store.siri.denySiri = false     store.appStore.denyInAppPurchases = false     store.appStore.maximumRating = 1000     store.appStore.requirePasswordForPurchases = false     store.media.denyExplicitContent = false     store.gameCenter.denyMultiplayerGaming = false     store.media.denyMusicService = false     store.application.denyAppInstallation = false   } } extension DeviceActivityName {   static let daily = Self("daily") } import SwiftUI import FamilyControls struct AppPicker: View {   @StateObject var model = MyModel.shared   @State var isPresented = false       var body: some View {     Button("Select Apps to Discourage") {       isPresented = true     }     .familyActivityPicker(isPresented: $isPresented, selection: $model.selectionToDiscourage)   } }
Posted
by
Post not yet marked as solved
2 Replies
832 Views
I am using the DeviceActivity framework to let the user track their activity (so also for non FamilySharing users). For tracking to cover multiple devices, does the app need to be installed/running on all devices or can the OS report activity to the app on one device? I haven't found a way to do that...
Posted
by
cmj
Post not yet marked as solved
7 Replies
1.1k Views
After the Screen Time permissions have been provided by the user, when I create a label with the user's selected ApplicationToken or CategoryToken, it's often (not always!) show like this: I instantiate the label like this, where app is an ApplicationToken or CategoryToken: Label(app)     .labelStyle(.iconOnly) After the app is killed and reloaded, the icons show up fine. Any suggestions on how to fix this? Is this an issue with the Screen Time API, or am I instantiating the label in the wrong way?
Posted
by
Post not yet marked as solved
3 Replies
1.1k Views
Hello, we have rare case of AuthorizationCenter.shared.requestAuthorization(for: .individual) failing to autorize user on real device - iPhone XR (iOS 16.1.2). It does not throw the standard FamilyControlsError which we are handling, but NSCocoaErrorDomain. This is the entire po description: Error Domain=NSCocoaErrorDomain Code=4864 "The given data was not a valid property list." UserInfo={NSCodingPath=(), NSDebugDescription=The given data was not a valid property list., NSUnderlyingError=0x283af4d80 {Error Domain=NSCocoaErrorDomain Code=3840 "Cannot parse a NULL or zero-length data" UserInfo={NSDebugDescription=Cannot parse a NULL or zero-length data}}} The localized one says: "The data couldn’t be read because it isn’t in the correct format." This sounds like some error deep in iOS. The testing device has Apple ID logged in and uses passcode. Anything we can do on our end to solve this issue?
Posted
by
Post not yet marked as solved
3 Replies
1.2k Views
Good afternoon. I have a question, the answer to which I did not find in the documentation. Let's imagine that there is a parent device and two or more children (each child device received authorization "AuthorizationCenter.shared.requestAuthorization(for: .child)"), an application is installed on each of the devices. All accounts (parent and child) are members of the same Family group. How can I show the familyActivityPicker on the parent device and display information there separately for each of the children's devices. As I see it, familyActivityPicker shows either applications from one of the children's devices or all applications from all children's devices, which seems very inconvenient to me. If you call familyActivityPicker on the application directly on the child's device, then the applications that correspond to this device are shown. If you watch the native Screen Time application on the parent device, there is a choice of children's devices. Thank you!
Posted
by
Post not yet marked as solved
1 Replies
1.2k Views
I am building a screen time restricting app that shields certain apps. I would like to know when users attempt to "cheat" by adding an app to the "Always Allowed" list in the Screen Time Settings. Having a way to detect when the user takes this action would be helpful. I've explored other options but they all seem to fall short: If I set store.shield.applications, that will also shield "Always Allowed" apps, but unfortunately, this is restricted to 50 apps. This would be ideal, if not for the 50 apps limit. If I set a store.shield.applicationCategories policy, this will not shield the "Always Allowed" apps. Using a DeviceActivityMonitor.eventDidReachThreshold callback, but this is triggered regardless of whether or not the shield is visible. Ideally, it would only be triggered for unshielded apps. Trying to indicate the shield is visible from the ShieldConfigurationDataSource, but this extension is sandboxed for privacy reasons so I cannot communicate back to the hosting app. Is what I'm requesting possible? Thanks
Posted
by
Post not yet marked as solved
2 Replies
712 Views
currently when I try to set several schedules to the same activity the latest schedule I set is the only one I understand I can have only 1 schedule for activity. ? I thought about setting a new schedule on the intervalDidEnd but, I get no interval did start if the current time is in the middle of the interval I set For example, now it is 15:00, and my previous interval started at 14:00 and ends at 16:00 but the user sets a new interval from 14:30 - 16:40 I call the deviceActivityCenter.stopMonitoring([someActivityName]) and get noIntervalDidEnd event Then I set the new interval successfully with deviceActivityCenter.startMonitoring(someActivityName, during: deviceActivitySchedule) and get no intervalDidStartEvent So how can I achieve several intervals? If I had gotten the events of the start and end it would be possible Thanks for the help
Posted
by
Post not yet marked as solved
8 Replies
1.9k Views
3.5 weeks ago I submitted form https://developer.apple.com/contact/request/family-controls-distribution to get Family Controls entitlement for my app. I still not received any feedback at all...   Contacting Support also doesn't help... Is there any time limits for this request or any average time of waiting for feedback?
Posted
by
Post not yet marked as solved
3 Replies
809 Views
Hi there, In rare cases (about 0.2% of the time?), I'm seeing calls to startMonitoring on an instance of DeviceActivityCenter throw an error with localizedDescription "couldn’t communicate with a helper application." I am certain I am passing valid parameters to the startMonitoring call because sometimes a naive retry after a few seconds succeeds. Similarly, I am certain that FamilyControls permissions have been granted by the user. Was hoping to get more color from the systems team on what some causes of this error are and if it is avoidable by the programmer.
Posted
by