Post not yet marked as solved
I got a client request to build a parental control app like Parentkit(https://parentkit.co/) or Ourpact (http://ourpact.com/) to help parents manage their children devices. After doing some research online, I figured that it could be a MDM feature and requires an apple enterprise account for implementation. However, Apple developer program support does not allow me to create an enterprise account for developing a MDM system for non-company members. They also said that any non-company use of MDM is not allowed by Apple. If what they said is true, MDM implementation should not be allowed in the abovementioned parental control apps. Would they be using other means without the need to register an enterprise account to archieve real-time, over-the-air control on device restriction? If that is the case, what else I should read and work on to build a parental control apps like those without registering an enterprise account?
Post not yet marked as solved
Compiled existing app with XCode Version 13.0 beta (13A5154h) without any source code changes and tested on iPhone XR running iOS 15 (beta) and noticed that the Device Proximity sensor features quit working.
Compiling the identical app with Xcode Version 12.5 release (12E262) and running on another iPhone XR with iOS 14.6 does work as expected. The app also works as expected on iOS releases prior to version 14.6.
Also, downloading the app from the AppStore and executing it on the Phone with iOS 15 (beta) shows the same issue.
Has anyone experienced a similar problem using iOS 15 (beta) and found a solution.
Any recommendations are welcome.
Thanks, DJ
Post not yet marked as solved
I am writing an app of family controls and device settings. In the docs for DeviceActivityMonitor I read about the principal class of device activity monitor extension, so I have to implement it. But, in XCode there is no such extension. How do i create it?
Post not yet marked as solved
What is the NSExtensionPointIdentifier for this type of extension?
Thanks.
Post not yet marked as solved
I've been trying to get something to work with the Screen Time API, but almost everything related to it is completely and truly broken/unimplemented. I've tried all of this in the iOS 15 Beta 2 and 3 and Xcode 13 Beta 2 and 3.
These are just a handful of the bugs I came across:
Screen Time APIs do not work on the simulator. Calling AuthorizationCenter.shared.requestAuthorization on a simulator with a logged in child account always results in "FamilyControls.FamilyControlsError Code=3"
FamilyActivityPicker does not list installed apps on either of the guardian's or child's devices, it only lists the categories. It's not clear at this point whether FamilyActivityPicker needs to be called on the parent or the child device.
Assuming restrictions can actually be set, there is no API to allow setting up of restrictions for individual kids.
After successfully authorizing a child device via AuthorizationCenter.shared.requestAuthorization, DeviceActivityCenter.startMonitoring always results in an MonitoringError.unauthorized error.
AuthorizationCenter.requestAuthorization error in callback cannot be mapped back to FamilyControlsError because it is a plain NSError with an error code and FamilyControlsError does not expose an initialiser that takes a rawValue.
Even though an app is authorized to managed ScreenTime on a child device, the child can always just delete the app. (I would try to submit a bug with device diagnostics about this using Feedback Assistant, but to top it all off at the moment I am receiving an error in FA that says "Unable to gather diagnostics" / "A problem was encountered when trying to gather diagnostics. Try gathering diagnostics again").
There's no device activity / shield configuration or shield action extension templates in Xcode. For those wondering, I created a CallDirectory extension and then changed the NSExtensionPointIdentifier in the plist to the appropriate value. What is the appropriate value? It's not mentioned in the documentation :), so I had to dig around in the Xcode support files to find out the following identifiers:
com.apple.ManagedSettings.shield-action-service
com.apple.ManagedSettingsUI.shield-configuration-service
com.apple.deviceactivity.monitor-extension
And this leads me to my last item: the documentation which is absolutely lacking. There is no programming guide for the frameworks and the Homework app we saw developed during WWDC is not available. It's not clear how the settings from the guardian app get applied to the child app. Is there a built-in mechanism or do we need to use our own implementation to transfer those changes (via push or whatever)?
Of course I reported almost all of this via Feedback Assistant, but considering I had previous feedback for other APIs sit there untouched for years in the past, it's really frustrating and it feels like I'm just talking to myself with those bug reports.
So, did I do something wrong and completely misinterpreted the capabilities and functionality of the ScreenTime API or is it truly broken and non-functional in iOS 15 Beta 2/3?
There's absolutely no mention of these issues in the release notes so I am starting to question my sanity here.
Post not yet marked as solved
I am facing this issue when i start monitoring
error The operation couldn’t be completed. (DeviceActivity.DeviceActivityCenter.MonitoringError error 0.)
source code
in didFinishLaunchingWithOptions
center.requestAuthorization{ result in
print(result)
switch result {
case .success():
print("success")
switch self.center.authorizationStatus {
case .approved:
print("approved")
let center = DeviceActivityCenter()
do {
try center.startMonitoring(.daily, during: self.schedule)
} catch {
print("error (error.localizedDescription)")
}
case .denied:
print("denied")
case .notDetermined:
print("not determined")
}
case .failure(let error):
print(error.localizedDescription)
}
}
Post not yet marked as solved
Several questions to some intentions behind the frameworks and specific issues with it's usage, underlined with filed Feedback Assistant reports. (see below)
Understanding of the Application class
Such class can be either instantiated with the token (which only the OS provides with the FamilyActivityPicker) or through a bundleIdentifier.
When is it intended to use the bundleIdentifier initializer?
Currently it is not possible to set a threshold limit on an application created via bundleIdentifier because the DeviceActivityEvent only accepts a Set<ApplicationToken> which a developer can not instantiate.
Family Picker
Is it intended to use this picker only on the child's device or can the parent see which apps are installed on the child's device? (FB9375607 & FB9375638)
If so, how do you imagine when a new app get's installed, does the guardian have to regularly check if a new app is installed and if so update it's settings on the child device?
How can an app obtain the app icon of such an application or category? (FB9375449)
ShieldConfiguration & Action
When a schedule's callback happens (FB9375294) and an application is shielded we receive the localizedDisplayName of such application to show it in the shield UI.
In the WWDC session it was said that you could have an action that let's you do a network request to e.g. ask the guardian to lift the restriction which is located in a different extension.
Will the localizedDisplayName be available to be included in the request so that the guardian knows which app they lift the restriction on?
Filed Feedback Assistant Tickets:
Start monitoring returns Unauthorized when the device is authorized - FB9375294
Provide an app icon for an application instance - FB9375449
FamilyActivityPicker does not list apps on authorized child device - FB9375607
Show installed apps from child on guardians phone - FB9375638
Post not yet marked as solved
We would like to use this framework to enable user to customize only relevant apps or websites that will be automatically connected via VPN.
Could we use this framework for this use-case without being parental control app ?
Post not yet marked as solved
i have two physical devices one for parent and one for child. on the child device.
AuthorizationCenter.shared.requestAuthorization returns me .success but on the parent device it always fails with receiving that "The operation couldn’t be completed. (FamilyControls.FamilyControlsError error 2.)"
what are the reasons that may cause this error on the parent device?
Post not yet marked as solved
Hi! There weren't any mentions in the video and documentation on how the Screen Time API handles multiple children and multiple devices. Specifically, cases like this:
Multiple children with one device per child
Multiple children with multiple devices per child (e.g. iPhone + iPad)
Parent/guardian with multiple devices
The FamilyActivityPicker doesn't take any parameters. What will happen when a parent with multiple kids opens the picker?
Thanks.
Post not yet marked as solved
Dear Friends,
We are developing an application for IOS, but we are challenging in a situation. We want to track usage time of other apps such as Duolingo, Tandem etc. in our application. We don't want to track application, we only aim to track usage time. Related to this, we found an API called Screen Time API, nevertheless we couldn't be sure that we are allowed to take such information. In this manner, we need your recommendations and comments about this idea and API.
The app will support users to reach their aims by tracking their usage of some specific apps that are related to their targets. For instance, if a person needs to practice some language in Tandem, he or she can see Tandem usage on our app.
Can we import their usage time information of the users' apps?
Can we use Screen Time API to realize this target?
Will we need to create a document like proposal for the AppStore team to express our aim and method?
Post not yet marked as solved
Hello everyone! Who knows? Who tried it? In the technical documentation for the new mac 2021 on m1, it is written that only 1 additional monitor can be connected. How about two? I have 2 additional monitors working perfectly on mac 2017 in addition to the main one. I'm used to working in xcode on 3 monitors. What should I do? Is it possible to connect 2 additional ones?
I'm going to add Screen Time API functionality to the existing app. I'm wondering if I can use this functionality without SwiftUI
Post not yet marked as solved
I want to get the alarms time set by user in the default alarm app in my custom app. Is there any way to do it, With the latest Screen time Api & Device Activity can we achieve this ??
Post not yet marked as solved
Hi, In child's app I could successfully get list of applications in Family Activity Picker after Parental authorisation but I couldn't get list of child's applications from the parent app.
I have tried to use Screen Time API. The problem is that I can't get access to FamilyControl framework on parent's device. What should I do to get access?
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
AuthorizationCenter.shared.requestAuthorization { res in
switch res {
case .success():
print("===SUCCESS AUTHORIZATION===")
case .failure(let error):
print(error.localizedDescription)
}
}
return true
}
}
Post not yet marked as solved
i'm trying to make my app start blocking/shielding and app according to the selection from a familyActivityPicker.
the problem that i'm having is that MyModel object is always nil when i'm accessing it inside the app extension. (DeviceActivityMonitor).
can someone give me an example of the object he uses to get the applicationTokens in the app extension?
an explanation on how to transfer information between the app and the app extension is also welcome.
Post not yet marked as solved
With the new iOS 15 screen time API, is it possible to get the usage history of apps or app categories? Like instead of just tracking the current usage within your newly added schedule, is there a way to see the average time spent on your phone for the past week/month/year like you can in settings?
Post not yet marked as solved
In familyActivityPicker I can select Apps and Categories but there is no way to add websites. In Apple own screentime App same control (familyActivityPicker) provides a way to add websites.
Is there some sort of settings/entitlement or capability required to added in the project?
i'm trying to shield and block apps on child device.
i managed to block apps by creating a variable blockedApps : Set = Set()
that contains a list of applications like Application(bundleIdentifier: "com.apple.calculator")
inside the intervalDidStart on my DeviceActivityMonitor extension
now i'm trying to shield an app using the same extension and nothing happens. for this i used this code inside intervalDidStart:
let calculatorApp = Application(bundleIdentifier: "com.apple.calculator")
var blockedApps : Set = Set()
guard let token = calculatorApp.token else {
return
}
blockedApps = [token]
store.shield.applications = blockedApps
and i cant tell what is the reason for this not working
is there a token issue that is nil?
does shielding requires a different app extension?
does my app extension requires some additional configuration maybe a different NSExtensionPointIdentifier?