Delve into the world of built-in app and system services available to developers. Discuss leveraging these services to enhance your app's functionality and user experience.

Posts under General subtopic

Post

Replies

Boosts

Views

Activity

Standalone watch app design/approach for kids/family/shared watches paired with parents' phones
Hi, so, we grabbed a couple of nice new watches the other week (Ultra for dad, SE for teenage son). Mostly cool and working together (calls, messages, maps, walkie talkies, etc, etc). All good. But then son said, "Dad, why can't I see my sleep stuff like you can..?". He was right, it wasn't working. Looking around a bit, it turns out that there are a bunch of things that are turned off or not available when pairing a kids watch with dad's phone. From the Apple page: "The following features and apps are not available: Medications, respiratory rate, irregular heart rhythm notifications, ECG, AF History, Cycle Tracking, Sleep, Wrist Temperature, Blood Oxygen, Walking Steadiness, Audiobooks, Remote, News, Shortcuts and the double-tap gesture". Now dev-me reacts to this situation with: "Ok, so let's just build a little standalone sleep app for son's watch. There must be lots of parents out there who would like the same thing". And there are also a bunch of other "family sharing" enabled apps that when you try and use them on kid's phone, say "iPhone requireed", i.e, they don't apparently work with just a watch hooked up to mum or dad's phone. So before I dive into that kind of project, which seems like an obvious fix path from a dev and a parents' point of view: does anybody know if this from Apple's point of view is a hardware, a software or a legal/age limitation? What's the basic framework/dev/design issue here? Is it something on the device(s) that prevents sleep data from even being collected on family/kids paired watches? (Therefore don't bother trying to build an app); I assume not becauses it's just a normal SE used by a kid; or Is it "just" that Apple hasn't wanted to make that available without a kids iPhone too (Therefore you could certainly build a standalone app to do what Apple hasn't wanted to do); or Netiher 1 nor 2, but Apple won't even allow Sleep data collection for kids for some legal/health data reason (Therefore don't bother trying to build the app).
0
1
483
Oct ’24
Issues with Siri Shortcuts: Confirmation Prompt, Inconsistent Behavior
Hello Apple Developer Community, I’m working on integrating Siri into my React Native app using native iOS code and bridging to React Native. I’ve followed the necessary steps to set up Siri support, including: Adding the Siri capability. Adding Siri usage descriptions in Info.plist. Using AppIntent and AppShortcutsProvider to define shortcuts. However, I’m facing the following issues: Siri Prompts for Confirmation When a user says a phrase, Siri asks, "Turn on 'MyApp' shortcuts with Siri?" instead of directly recognizing the phrase. Is this expected behavior? If so, how can I reduce friction for users and make the experience more seamless? Inconsistent Behavior for Existing Users For users updating to a version with Siri support: When the app is closed, Siri says, "MyApp hasn't added support for that with Siri." When the app is open, Siri prompts, "Turn on shortcut for MyApp?" and rest all working fine Why does Siri not recognize the shortcut when the app is closed, even though the shortcut is defined in AppShortcutsProvider? How can I ensure that Siri recognizes the shortcut regardless of whether the app is open or closed? Other than using AppIntent and AppShortcutsProvider should i try Donating shortcuts(will that helps for updated user case). Please help me on this
8
1
482
Apr ’25
Using MetricKit for Hangs on macOS
Hallo all, I did a test integration of MetricKit into one of our apps...I'am on macOS Ventura 13.3.1 (a). The app is not distributed via the App Store. I subscribed to the MXMetricManager and implemented the didReceiveDiagnosticPayloads function. So far everything seems to work, when I use in Xcode: Debug -> Simulate MetricKit Payload I get a callback and the payload. So I did some further testing. When I build the app debug version with a test crash and then run the Debug Version (without Xcode) and let it crash the next time I start the app I get a callback to didReceiveDiagnosticPayloads with all the information about the crash. But I'am not able to get a hang report. I tested it by adding a sleep (60) and adding some intensive computation work on the main thread so that it is busy for several seconds, I get no hang reports :-( I'am using the Debug version and run it without Xcode. Are hang reports expected to be reported immediately? I also get after 24 hours no hang reports. Can someone help me? Thanks and have a nice day!
2
1
1.2k
4d
SIri trigger command conflicts
We're having trouble with getting Siri to hand off specific trigger words to our app via shortcuts. I want to be able to say "Hey Siri Myappname Foobar" but in some cases if Foobar is the name of a specific business it may launch maps instead showing locations of those businesses. Is there any way to inform Siri, "no, *****, launch our app as the shortcut specifies!"
0
1
231
Mar ’25
Inquiry About Deferred Deep Link Limitation and Alternative Options
Dear Apple Support Team, I hope this message finds you well. I’m reaching out to inquire about the limitations of deferred deep linking within iOS applications. Specifically, I’m interested in understanding the constraints and challenges that prevent deferred deep links from functioning as expected in certain scenarios (e.g., when the app is not installed or other related issues). Additionally, I would like to ask if there are any recommended alternative approaches or solutions to implement deep linking, ensuring that users can still be directed to specific content or screens even if they need to install the app first. Your insights and guidance would be greatly appreciated as I work to enhance the user experience in my app. Thank you for your time and assistance. Best regards, Santosh
4
5
1.1k
Apr ’25
How to create Stick Pack with custom UI
Hi, I'd like to develop sticker packs for iMessage. In particular, I'd like to have custom UIs so user can select different groups of stickers under the same sticker drawer. Based on what I read in the developer doc, sticker pack does not allow custom UIs, and I have to go to iMessage apps. However, I discovered quite a few sticker packs have custom UIs. For example, GIPHY, Fluffcorn, Animal Stickers, Mochj Cat, they are in sticker drawer but they still have custom UIs with tabs. How is this possible? Is there something I'm missing from the developer doc? Thanks a lot!
1
1
454
Sep ’24
iOS 17 AppIntent and requesting confirmation for widgets
I have a home widget with buttons (new in iOS 17). In order to prevent taking action if the user taps on the widget buttons accidentally, I want to ask the user for confirmation. It appeared that requestConfirmation be exactly what I needed, but no confirmation view shows up when I invoke this method in the perform function. I have tried the following: try await requestConfirmation(result: .result(dialog: "Are you sure you want to do this?") { Image(.mdlsWhite) }) and this alternative: let confirmed: Bool = try await $name.requestConfirmation(for: self.name, dialog: IntentDialog(stringLiteral: msg)) Neither option work. I am starting to think that the requestConfirmation is not to be used with Home Widgets. Is there a better way to handle confirmations for buttons included in a Home Widget?
4
1
1.4k
Feb ’25
Live Caller ID Extension - Any way to limit use based on subscription status?
Is there any way to limit use of the iOS 18 Live Caller ID extension to subscribed users? My team has been trying to figure out a workable approach to only allow full call blocking / identification via this feature for users with an active subscription and so far we have not found a workable approach. One solution we’ve looked into is invalidating access tokens on the backend and only calling refreshPIRParameters(forExtensionWithIdentifier:) for users with a current valid subscription but it seems that this won’t work since the device will attempt to refresh on its own eventually. We’ve also looked into swapping out the userTierToken in the extension based on subscription status but this also does not seem to be possible. Is limiting/modifying this feature's functionality based on subscription status just not possible, likely by design due to the privacy-focused nature of it, or is there some other approach we’re overlooking?
1
1
360
Jan ’25
Message Filter Extension - Query Parameters in ILMessageFilterExtensionNetworkURL
Hi, I'm implementing a Message Filter Extension and need clarification about the ILMessageFilterExtensionNetworkURL Info.plist key. Is it valid to include query parameters in the URL like: https://example.com/test?id=123 I want to make sure this approach will pass App Review before implementing it. The query parameter would be used to identify the client making the filtering request. Has anyone successfully used URLs with query parameters in their approved Message Filter Extensions? Any insights would be appreciated. Thanks!
1
1
321
Jan ’25
ActivityCategoryPolicy.all(except: allowList) blocks all apps, even the ones that should be exempted
Hello fellow Screen Time developers! I have bee experimenting with the ActivityCategoryPolicy.all(except: allowList) API of the ManagedSettings framework in order to provide a digital detox feature to my app, where ALL apps would be blocked, except some important ones (phone, messages, maps). The apps to be exempted can be configured by the user via the FamilyActivitySelection(). However, I am experiencing a strange bug, where all apps are restricted / blocked, even the ones that are set to be exempted and are part of the allowList Set. Instead of not restricting allowed apps at all, these apps are restricted with a generic shield (screenshot below) – a concrete shield is not requested for them from my ShieldConfigurationDataSource. I have also filed a radar under this number, attached is a minimalistic sample project and video that shows how to reproduce this: FB15500605 (no response so far) I have also seen other people report on this issue, but couldn't find any useful information there: https://forums.developer.apple.com/forums/thread/750988 https://forums.developer.apple.com/forums/thread/762287 Thanks a lot for your help, and have a nice day!
3
1
685
Nov ’24
Family Controls Entitlement Request: How Long for Approval?
A few weeks ago, I submitted a request for the Family Controls & Personal Device Usage Entitlement to enable my app to access the Managed Settings and Device Activity frameworks in the Screen Time API. The app is nearly complete, with the only remaining component being the Family Controls capability. As of now, I haven’t received a response regarding the request. I’m wondering if anyone else has experienced a similar situation or can provide insight into the following: • How long does it typically take to receive feedback on this type of entitlement request? • Is there a way to check if a request is still active and under review? • Is a finished website required for the entitlement to be granted? Any information or guidance would be greatly appreciated!
2
1
666
Nov ’24
iOS not calling my Quick Look extension for RAW files recognized by the system
I'm the developer of Camera RawX (avail on the Mac App Store). I'm working on Camera RawX for iOS to provide Quick Look support for camera RAW files not supported by iOS. I use the Files app to open a RAW file to invoke Quick Look on my iPad (it is running iOS 17.6.1). The RAW file in question is a Fuji compressed RAF file. When I tap on the RAF file, iOS opens the Quick Look window, but my app's Quick Look extension is not called. If the RAW file in question is a Sigma Foveon X3F file, a file that has no native Apple RAW support, then my Quick Look extension is called and I'm able to display the image in the Quick Look window without issue. It seems that a system recognized RAW file extension (RAF in this case), is not triggering my Quick Look extension. On the macOS, this works fine without any issue. The strange thing is that my Thumbnail extension is being called when the RAW files show up in Files. Even if it is a RAF file. So it seems like a bug to me or am I missing something crucial in my Info.plist file? Albert
8
1
807
Feb ’25
Deep/universal links not working in ios with edge broser
Deeplinks in our Mobile (native) application work fine from email clients such as Gmail and Outlook with a default browser such as Safari. If the app is already installed, clicking the link launches it. However, when we click on the same link from Outlook email with the default browser, Edge, it opens directly in the browser, because any external links in Outlook email route through safe links, which prevents deep linking to the APP. The current behavior is as follows: When Safari is the default browser, the process works seamlessly, and the app opens directly. outlook->deep link pressed -> redirect to safari ->opens the app if already installed However, when Microsoft Edge is set as the default browser, it opens the App Store link in a popover, with an option to open the app if installed. outlook->deep link pressed -> redirect to Edge->opens the app store inside edge even app already installed Note : outlook is enforcing safe link policies and also App protection policies. I would like to achieve the same behavior with Microsoft Edge as with Safari, where the app opens directly rather than redirecting to the App Store. Is there a specific configuration or workaround to ensure that Microsoft Edge, when set as the default browser, opens the app directly instead of redirecting to the App Store? Any insights or suggestions would be greatly appreciated. I am expecting that this safe link works the same as works with a safari in iOS Devices. I have also tried this - https://learn.microsoft.com/en-us/mem/intune/apps/app-protection-policy-settings-ios#exempt-universal-links but not working I'd appreciate it if you could assist me with this matter as soon as possible. How to handle deep links in Outlook when using a default browser like Edge
0
1
790
Oct ’24
WeatherKit moonPhase:full is skipped
HI there, when requesting the daily forecast via the WeatherKit REST API, I found out that under certain circumstances the moon phase full is skipped. Example from Japan (working): { "forecastDaily": { "name": "DailyForecast", "metadata": { "attributionURL": "https://developer.apple.com/weatherkit/data-source-attribution/", "expireTime": "2024-10-21T15:16:10Z", "latitude": 35.650, "longitude": 139.840, "readTime": "2024-10-21T14:16:10Z", "reportedTime": "2024-10-21T12:00:37Z", "units": "m", "version": 1, "sourceType": "modeled" }, "days": [ ..., { "forecastStart": "2024-10-16T15:00:00Z", "forecastEnd": "2024-10-17T15:00:00Z", "conditionCode": "MostlyCloudy", "maxUvIndex": 4, "moonPhase": "waxingGibbous", "moonrise": "2024-10-17T07:47:26Z", "moonset": "2024-10-16T20:09:01Z", "precipitationAmount": 0.09, "precipitationChance": 0.43, "precipitationType": "rain", ... "windSpeedMax": 16.03, }, { "forecastStart": "2024-10-17T15:00:00Z", "forecastEnd": "2024-10-18T15:00:00Z", "conditionCode": "Rain", "maxUvIndex": 4, "moonPhase": "full", "moonrise": "2024-10-18T08:20:34Z", "moonset": "2024-10-17T21:24:49Z", "precipitationAmount": 4.83, "precipitationChance": 0.83, "precipitationType": "rain", ... "windSpeedMax": 15.57, }, { "forecastStart": "2024-10-18T15:00:00Z", "forecastEnd": "2024-10-19T15:00:00Z", "conditionCode": "Drizzle", "maxUvIndex": 5, "moonPhase": "waningGibbous", "moonrise": "2024-10-19T08:58:43Z", "moonset": "2024-10-18T22:42:03Z", "precipitationAmount": 3.85, "precipitationChance": 0.76, ... "windSpeedMax": 28.81, }, ... ] } } Example from Germany where the fullmoon is skipped: { "forecastDaily": { "name": "DailyForecast", "metadata": { "attributionURL": "https://developer.apple.com/weatherkit/data-source-attribution/", "expireTime": "2024-10-21T15:41:17Z", "latitude": 47.760, "longitude": 12.650, "readTime": "2024-10-21T14:41:17Z", "reportedTime": "2024-10-21T13:00:37Z", "units": "m", "version": 1, "sourceType": "modeled" }, "days": [ { "forecastStart": "2024-10-16T22:00:00Z", "forecastEnd": "2024-10-17T22:00:00Z", "conditionCode": "MostlyClear", "maxUvIndex": 3, "moonPhase": "waxingGibbous", "moonrise": "2024-10-17T16:07:30Z", "moonset": "2024-10-17T05:19:30Z", "precipitationAmount": 0.0, ... "windSpeedMax": 8.23, }, { "forecastStart": "2024-10-17T22:00:00Z", "forecastEnd": "2024-10-18T22:00:00Z", "conditionCode": "Cloudy", "maxUvIndex": 2, "moonPhase": "waningGibbous", "moonrise": "2024-10-18T16:30:22Z", "moonset": "2024-10-18T06:48:39Z", "precipitationAmount": 1.17, ... "windSpeedMax": 8.73, }, { "forecastStart": "2024-10-18T22:00:00Z", "forecastEnd": "2024-10-19T22:00:00Z", "conditionCode": "Cloudy", "maxUvIndex": 2, "moonPhase": "waningGibbous", "moonrise": "2024-10-19T16:59:14Z", "moonset": "2024-10-19T08:18:33Z", "precipitationAmount": 0.02, ... "windSpeedMax": 7.16, }, ] } } As you can see here https://moon.nasa.gov/moon-observation/daily-moon-guide/?intent=011#1729171951907::0:: and on several other sites specialized on the lunar cycle) on 2024-10-17 should be shown full moon. I know this error is probably because the forecast starts prior to the full moon phase and ends after it but customers don't care about technicalities. They see that there is a full moon missing and complain to me. And they are right. Can you fix this somehow? For example, if a DailyForecast spans the majority of a full moon this Day is marked as full moon. Another question: Are you considering providing a moonPhase attribute to the "currentWeather" dataset? That would be the best option. (At least for me :))
2
3
438
Oct ’24
Determining "volumes" of paths on macOS and iOS.
Hi, so as I understand it is not possible to know what all possible sources of files are available on iOS using some api call (by sources I mean smb shares connected, iCloud, gdrive, etc), the only paths I can get are the app sandbox, app group container and the same on iCloud. I can get the list of mount points in macOS using getmntinfo(), app/group sandbox and apart from these whatever standard locations I have given access to to my sandboxed app. Are there other paths that I can get? I want to know how I can determine the volume given a user picks a file using a file picker. Say, they picked 10 files from gdrive and another 5 from local storage. If I encounter some errors on the files from gdrive I want to stop working on all 10 of them but to do that I need to be able to determine that that are on this particular volume. Is there a way to do this programmatically? Ex: gdrive on iOS : "/private/var/mobile/Containers/Shared/AppGroup/6208BBEE-24BF-4CC9-A9ED-846F987C0442/File Provider Storage/39822865/1P8WD1tWEaq81ZB_DodTTZhXm0p00QaF7/test.txt" on MacOS: "/Users/username/Library/CloudStorage/GoogleDrive-useremailid/My Drive"
2
1
692
Oct ’24
Set Default Value for Date Picker in App Intent
Hi everyone, I have a simple question regarding App Intents. I have an intent that defines a few parameters, one of which is a Date. When the user is prompted for input, I’d like the date picker to start at a specific value (e.g., tomorrow) instead of the default current date. Is there a way to set an initial/default value for the date parameter in an App Intent? Thanks in advance for any guidance!
0
1
280
Jan ’25
WeatherKit request fail
Hello, I have an app on the App Store built around WeatherKit and it was working fine, up until this morning when I started seeing errors when using the app. When debugging using Xcode I see the familiar error Failed to generate jwt token for: com.apple.weatherkit.authservice with error: Error Domain=WeatherDaemon.WDSJWTAuthenticatorServiceListener.Errors Code=2 "(null)" which, according to what I've read on the forums looks like an authentication error. Attaching a network debugger to the Simulator, I saw this error: This I have tried: Verify that WeatherKit is enabled on both Capabilities and App Services tabs on the Dev Portal. Toggle on/off this value and regenerate Provisioning Profiles Uninstall/reinstall Checking that I have API available calls. Nothing. If I create a new Bundle ID and sign with that, it works correctly. But this is not an option since that will force all my customers to download everything from scratch. I am getting emails from customers demanding money back and I can't figure out what has happened. The only thing I can think of, is that I started developing an Apple Watch app to complement the iOS app, but that was last week and everything was working fine.
6
1
506
Jan ’25
How to manage child device's apps through an app on parent's phone using Screen Time Controls?
When we request auth from the AuthorizationCenter, it seems that we're only really able to allow users to control the apps on the parent's phone. Is there a way to allow us to let parents manage apps on the kid's device directly through our parent app? For context, we have 2 different apps, one for the parent and one for the child. The child is able to purchase screen time and the parent can redeem them (activate those minutes) from their end.
1
1
250
Mar ’25