Post

Replies

Boosts

Views

Activity

Reply to Schedules | iOS interpreting schedules as an ongoing or "active"
Kmart, I highly appreciate your quick response and provided answers for each of my questions! I'm clear with 2nd, 3rd, 4th and 5th. Let me clarify the 1st one please: In order to exclude device usage from the beginning of the day, use the hour/minute/second components of Date.now as the start components of your schedule. If you are trying start a repeating schedule from 12:00am to 11:59pm, you might need to use two different schedules: a non-repeating schedule for the first "partial" day and then when you get the intervalDidEnd callback for that first "partial" day, you can then start monitoring your actual repeating schedule for 12:00am to 11:59pm. For creating schedules from the beginning of the day I do so: let mondaySchedule = DeviceActivitySchedule( intervalStart: DateComponents(hour: 0, minute: 0), intervalEnd: DateComponents(hour: 23, minute: 59), repeats: true ) I'm trying to reach a vice versa implementation: I'd like to create a repeatable schedule, let say for each Monday, and this schedule has to invoke eventDidReachThreshold. On top of it, I'd like to create another one "partial" repeatable schedule, let say on Monday from 2pm to 4pm, this schedule hasn't invoke eventDidReachThreshold. So, my question is: Is eventDidReachThreshold has to work properly, in case it was programmed for the whole repeatable day schedule? And what if I'd like to create the same schedules for Tuesday (both, for whole day and "partial" and both are repeatable), will it have negative impact on Monday's schedules and for the eventDidReachThreshold event?
Topic: App & System Services SubTopic: General Tags:
Apr ’23
Reply to Screen Time | How to block/shield Safari?
Example of working solution let store = ManagedSettingsStore The code below will hide Safari's icon from home screen: let safari = Application(bundleIdentifier: "com.apple.mobilesafari") let blockedApplications: Set<Application> = [safari] store.application.blockedApplications = blockedApplications To display it back do this: store.application.blockedApplications = []
Topic: App & System Services SubTopic: General Tags:
Apr ’23
Reply to Interact with ManagedSettingsStore from DeviceActivityMonitor
Systems Engineer, thank you for your reply! Your example is exactly what I'm doing in the project. I'm using iOS 16.3.1 on the test device. Tell me please, is there any possibility that version of: macOS, Xcode or Xcode command line tools could have impact on that behaviour? I'm 100% sure I'm using single ManagedSettingsStore across the app. Btw, could you please share the link or some info in case we using store for iOS15? I'd like to see the mechanism of its synchronisation. Thank you in advance!
Topic: App & System Services SubTopic: General Tags:
Mar ’23
Reply to iOS 16 | Screen Time API | Missing Family Controls from Provisioning Profile
Hi Leo and other folks who is stack with this. You need to do next: You need to request ENTITLEMENT KEYS (com.apple.developer.family-control). You must do it only from Account Holder. Even if you Admin - you can’t do it. Wait for Apple’s approval. It could takes up to the week. You will receive an email related to Account Holder. You must do it only from Account Holder. Even if you Admin - you can’t do it. Wait for Apple’s approval. After you’ve got approval, go to the Identifiers, choose your app’s id, open it. Now you should find Additional Capabilities tab. There should be Family Controls (Distribution) - just Enable it. Create new Provisioning certificates, download, install. (Optional) To make sure everything is setup correct, you can do the dump of your new certificate before install it, but this step is not required. If you going to do that, you can check Eskimo's answer, you need to only 5th step. (Optional) It will be good to clean your Keychain with old certificate related to your app, before you install new one. Make sure you’ve added Family Controls Capability in the Xcode and you can see it in .entitlements file. Fingers crossed🤞 Now everything should work 🔥  Glory to Ukraine 🇺🇦
Jan ’23
Reply to Schedules | iOS interpreting schedules as an ongoing or "active"
Kmart, I highly appreciate your quick response and provided answers for each of my questions! I'm clear with 2nd, 3rd, 4th and 5th. Let me clarify the 1st one please: In order to exclude device usage from the beginning of the day, use the hour/minute/second components of Date.now as the start components of your schedule. If you are trying start a repeating schedule from 12:00am to 11:59pm, you might need to use two different schedules: a non-repeating schedule for the first "partial" day and then when you get the intervalDidEnd callback for that first "partial" day, you can then start monitoring your actual repeating schedule for 12:00am to 11:59pm. For creating schedules from the beginning of the day I do so: let mondaySchedule = DeviceActivitySchedule( intervalStart: DateComponents(hour: 0, minute: 0), intervalEnd: DateComponents(hour: 23, minute: 59), repeats: true ) I'm trying to reach a vice versa implementation: I'd like to create a repeatable schedule, let say for each Monday, and this schedule has to invoke eventDidReachThreshold. On top of it, I'd like to create another one "partial" repeatable schedule, let say on Monday from 2pm to 4pm, this schedule hasn't invoke eventDidReachThreshold. So, my question is: Is eventDidReachThreshold has to work properly, in case it was programmed for the whole repeatable day schedule? And what if I'd like to create the same schedules for Tuesday (both, for whole day and "partial" and both are repeatable), will it have negative impact on Monday's schedules and for the eventDidReachThreshold event?
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Apr ’23
Reply to DeviceActivityMonitor eventDidReachThreshold triggering every time in same second as intervalDidStart gets called
Same issue! Kmart, what if day already ended, but eventDidReachThreshold invokes anyway? What if on the previous day, I didn’t open specified apps, but eventDidReachThreshold invokes anyway? Where else could be the problem?
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Apr ’23
Reply to Screen Time | eventDidReachThreshold triggers immediately
Kmart, what if day already ended, but eventDidReachThreshold invokes anyway? What if on the previous day, I didn’t open specified apps, but eventDidReachThreshold invokes anyway? Where else could be the problem?
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Apr ’23
Reply to Screen Time | How to block/shield Safari?
Example of working solution let store = ManagedSettingsStore The code below will hide Safari's icon from home screen: let safari = Application(bundleIdentifier: "com.apple.mobilesafari") let blockedApplications: Set<Application> = [safari] store.application.blockedApplications = blockedApplications To display it back do this: store.application.blockedApplications = []
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Apr ’23
Reply to Interact with ManagedSettingsStore from DeviceActivityMonitor
Systems Engineer, thank you for your reply! Your example is exactly what I'm doing in the project. I'm using iOS 16.3.1 on the test device. Tell me please, is there any possibility that version of: macOS, Xcode or Xcode command line tools could have impact on that behaviour? I'm 100% sure I'm using single ManagedSettingsStore across the app. Btw, could you please share the link or some info in case we using store for iOS15? I'd like to see the mechanism of its synchronisation. Thank you in advance!
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Mar ’23
Reply to Screen Time | How to block/shield Safari?
Like this?:     let mobilesafari = Application(bundleIdentifier: "com.apple.mobilesafari")     let mobilesafariToken = mobilesafari.token Fetching Safari's token as above always returns nil...
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Mar ’23
Reply to Get Set<ApplicationToken> after shielded apps trough applicationCategories .all
Oh, thank you for the detailed explanation! Of course I'd like to see it. These things seems obvious for me, and I actually wondered why it weren't implemented before the API was released. Is it real chance that Apple will implement it after report via Feedback Assistant?)
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Mar ’23
Reply to Can not trigger `intervalDidStart`| dear Kmart, are you still here?
Have the same issue.
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Feb ’23
Reply to FamilyActivitySelection | Screen Time API features iOS 16
Despite the link is broken, it helped. Thank you!
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Feb ’23
Reply to FamilyActivitySelection | Screen Time API features iOS 16
Strange behaviour of selecting multiple apps or category... for some category (Productivity) I'm able to block all apps for other category (Entertainment) when I select whole category, there are some apps blocked and some not for third category (Social) if select all apps, none of them will be blocked Why it's happening?
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Jan ’23
Reply to ScreenTime demo app "Homework"
You can find the link to GitHub with the source code mentioned in the video in this answer. Be aware that it's not official, and there are some gaps, but you will noticed it when you compare code with video.
Replies
Boosts
Views
Activity
Jan ’23
Reply to iOS 16 | Screen Time API | Missing Family Controls from Provisioning Profile
Hi Leo and other folks who is stack with this. You need to do next: You need to request ENTITLEMENT KEYS (com.apple.developer.family-control). You must do it only from Account Holder. Even if you Admin - you can’t do it. Wait for Apple’s approval. It could takes up to the week. You will receive an email related to Account Holder. You must do it only from Account Holder. Even if you Admin - you can’t do it. Wait for Apple’s approval. After you’ve got approval, go to the Identifiers, choose your app’s id, open it. Now you should find Additional Capabilities tab. There should be Family Controls (Distribution) - just Enable it. Create new Provisioning certificates, download, install. (Optional) To make sure everything is setup correct, you can do the dump of your new certificate before install it, but this step is not required. If you going to do that, you can check Eskimo's answer, you need to only 5th step. (Optional) It will be good to clean your Keychain with old certificate related to your app, before you install new one. Make sure you’ve added Family Controls Capability in the Xcode and you can see it in .entitlements file. Fingers crossed🤞 Now everything should work 🔥  Glory to Ukraine 🇺🇦
Replies
Boosts
Views
Activity
Jan ’23
Reply to iOS 16 | Screen Time API | Missing Family Controls from Provisioning Profile
Leo, in case you also faced with this issue or just passed it without any problems, please share you experience. I'll appreciate it! 🙏
Replies
Boosts
Views
Activity
Jan ’23
Reply to Family Activity Picker | Screen Time API features iOS 16
Hey once again, Kmart :) Thank you for the answer! I've tried both variants, and both lead to issues... Is the Documentation up to date? Have I been doing something wrong?
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Jan ’23
Reply to "Screen Time" API documentation
The question is old, but for newcomers... Managed Settings, Family Controls, Device Activity - these three frameworks actually represent the Screen Time API.
Topic: App & System Services SubTopic: Core OS Tags:
Replies
Boosts
Views
Activity
Jan ’23