Hi there,
I am using WeatherKit to display weather forecast information in an app.
I would like to include some information about when the weather forecast was issued for my users to see.
This information is included in the response Metadata as documented in the WeatherKit REST API docs:
https://developer.apple.com/documentation/weatherkitrestapi/metadata
Specifically there is a “reportedTime” property which I would like to use here.
However I am consuming WeatherKit via the Swift API, I don’t see this property available via the Swift APIs.
How can I access the reportedTime property via the WeatherKit Swift APIs? Or is it not exposed via the Swift APIs?
General
RSS for tagDelve 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.
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Created
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.
The server returns a response content-type must be text/html when universal links are configured
application/json can be used?
Hello.
Our app uses PTT framework and "Always" location tracking at the same time. By some reason, after backgrounding app, Dynamic Island shows only location tracking icon instead if PTT icon. And when user taps on it - application foregrounding instead of system PTT UI show. Only after first incoming PTT user can access system PTT UI.
Is it a bug or intended behaviour?
If I run an app with a Message Filter Extension on iOS 18 then it works as expected, however if its installed onto a phone with iOS 17.6.1 then there is the following error:
dyld[1042]: Symbol not found: _$sSo40ILMessageFilterCapabilitiesQueryResponseC14IdentityLookupE21promotionalSubActionsSaySo0abI6ActionVGvs
Referenced from: <C82A1045-98F4-3751-8080-413FD0B0DEEB> /private/var/containers/Bundle/Application/F295C156-9B20-4927-AEFA-C6983388B193/Myapp.app/PlugIns/MyMessageFilterExtension.appex/CequintTextFilterExtension.debug.dylib
Expected in: <29BFFA34-9B52-3D14-A254-A0653545B72E> /System/Library/Frameworks/IdentityLookup.framework/IdentityLookup
(App built using XCode 16.2).
Here's code causing the issue:
import IdentityLookup
final class MessageFilterExtension: ILMessageFilterExtension {}
extension MessageFilterExtension: ILMessageFilterQueryHandling, ILMessageFilterCapabilitiesQueryHandling {
func handle(_ capabilitiesQueryRequest: ILMessageFilterCapabilitiesQueryRequest, context: ILMessageFilterExtensionContext, completion: @escaping (ILMessageFilterCapabilitiesQueryResponse) -> Void) {
let response = ILMessageFilterCapabilitiesQueryResponse()
response.transactionalSubActions = [.transactionalCarrier, .transactionalHealth, .transactionalPublicServices, .transactionalFinance, .transactionalWeather, .transactionalRewards, .transactionalOrders, .transactionalOthers, .transactionalReminders]
response.promotionalSubActions = [.promotionalOffers, .promotionalOthers, .promotionalCoupons]
completion(response)
}
Message filter sub actions were introduced in iOS 16, so why is this error occurring when the code is run on iOS 17, but its fine with iOS 18?
This isn't specific to my app, its easily reproducable in two minutes - create an app, add a message filter extension target, change the template code to add a transactional or promotional sub action and then run and it'll occur.
(Reported as issue FB16148083)
There's a 128mb limit for donating items to core spotlight. As far as I understand, there's a warning that shows in the Xcode console when either approaching or hitting that limit. It would be great if there was an API to check the current status of available storage for QA purposes to see if we're either donating too much or can donate more. Thanks!
Use case: When users open any URL in iOS Safari and tap the share button, the share extension can automatically receive the PDF version of the webpage from Safari.
We've observed that the system Markup app and the Apple Books app can automatically receive a PDF file from Safari. However, our custom share extension only receives the webpage URL.
While iOS Safari provides an "Options" button to manually share a webpage as a PDF, this feature is not intuitive and requires user education.
Could someone help to identify the correct NSExtensionActivationRule (or any other solution) that would allow our share extension to directly receive the PDF snapshot from Safari without requiring additional user actions?
Hello!
https://github.com/apple/live-caller-id-lookup-example/blob/main/Sources/PIRService/PIRService.docc/DataFormat.md
The link above shows the data format that the user who gets a call, can get. I wonder if it is also possible to add other fields, for example: "summary". I am currently in the design-phase of an app that aims to present what the last call between the two parties was about, and that information can be gotten from an API that I will build according to Apple's principles that is comaptible with the Live Caller ID Lookup protocol. Therefore adding a field that will present a short summary of the last call will be very handy. Is that possible?
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?
Hi,
My env. is ..
Xcode: Version 16.2 (16C5032a)
macOS Sequoia: Version 15.1
And I have 2 problems.
Please give me the advice..
Failed Message.
When I run the automatically generated app as it is, the following error(warning?) message appears in the terminal.
Can't find or decode reasons
Failed to get or decode unavailable reasons
NSBundle file:///System/Library/PrivateFrameworks/MetalTools.framework/ principal class is nil because all fallbacks have failed
Not on the simulator
And the result is not running in the simulator, but instead appears as a window. (The simulator works fine when launched separately, but the app from the current project doesn’t show up in it.)
Hello Apple development team, I have developed an App for screen time management, which mainly uses ScreenTimeAPI. Users can set certain Apps to be disabled during a certain period of time.
After the App is released, users often report that the settings do not take effect as expected. I have seen many developers on the forum reporting that the DeviceActivityMonitor extension sometimes does not trigger callbacks. Based on this background, I have the following questions:
Is it a known problem that the DeviceActivityMonitor extension sometimes does not trigger callbacks? If so, are there any means to avoid or reduce the probability of occurrence?
In addition to being killed by the system when the running memory exceeds (I just called some ScreenTimeAPI and accessed UserDefaults in the extension, which should not exceed the running memory), under what other circumstances will the DeviceActivityMonitor extension be killed by the system? Will it automatically recover after being killed? Will some callbacks be called when killing?
Does ManagedSettingsStore have a life cycle? How do you avoid conflicts when configuring the underlying operating mechanism of multiple stores?
This is a random problem. I have never encountered it during development and debugging, but users often report it.
thanks
Topic:
App & System Services
SubTopic:
General
Tags:
Family Controls
Device Activity
Managed Settings
Hello everyone,
I'm experiencing an issue with my app, and I would greatly appreciate any guidance. Here's the situation:
My app works flawlessly on the simulator for all iPhone models (16, 16 Pro, 16 Pro Max, SE, etc.).
It runs without issues on physical iPhone 11 devices (both mine and a friend's).
However, when my friend installs the app from the App Store on their iPhone 15 Pro or iPhone 16, it crashes immediately upon opening.
Steps I’ve taken so far:
Verified that the app works on the simulator for the same models where it crashes in real life.
Updated the app's minimum deployment target to iOS 18, but this did not resolve the issue. The app still crashes on the physical iPhone 15 Pro and 16 models while continuing to run fine on previous physical devices and all simulated ones.
Additionally, I had another friend beta test the app through TestFlight on their iPhone 15 Pro, and they received an alert message indicating that the app had crashed when they tried to open it. This confirms the issue still exists after my attempted fixes.
I'm unsure what could be causing this discrepancy between the simulated and physical devices, or what the alert message in TestFlight might signify. Has anyone encountered a similar issue, or does anyone have suggestions on what I should do to fix this?
Thanks in advance for your help!
Hi everyone. Does anyone know if there a way to get a list of watch faces for a paired Apple Watch, or to set the current watch face? Or is this just not allowed?
Have looked through the WatchKit, WatchConnectivity, and WatchOS documentation and haven't found anything.
Hi all. Does anyone know if there's a way to get a list of watch faces for a paired Apple Watch or to set the current face? Or is this just not allowed?
I've taken a look at the WatchOS, WatchKit, and WatchConnectivity documentation and no luck there.
In the past it was possible to use the Today Extensions to do some background processing without having the unlock the phone. This was extremely useful for application, but now with the current WidgetKit we face the problem of sometimes having to enter the lock screen code if face Id fails, or is not available.
With the Today Extension, we were able to initiate a location request and send an HTTP request. Is there any way to get a similar request chain across on the latest OS? Maybe there is something out of the box that we are not thinking of.
Our application is highly time sensitive and in the field the lock screen delay can be a big problem and put a users safety at risk, so this is why I ask.
Is it possible to change the title "Choose Activites" and also remove the search on the FamilyActivityPicker?
Hello,
Could you please help me with the below,
How to display a toast message to the user in CarPlay after a successful operation?
How to show a spinner or an activity indicator just before performing some operation?
I have referred to the CarPlay pdf design guidelines in which I couldn't find support for the above two. But I could see a loader within a button in one of the default apps in CarPlay simulator.
Kindly help me with these queries
Hello,
In our application, we have implemented an app extension to allow users to open the main app directly from the share activity window. To achieve this, we used the openURL(:) method from the NSExtensionContext class, as documented here: openURL(:).
However, we received one post from Apple stating that opening the main app directly is typically only supported in extensions such as Today widgets or iMessage apps. They also mentioned that this approach may require an additional review during the App Store submission process.
Link: https://developer.apple.com/documentation/foundation/nsextensioncontext/1416791-openurl
Could someone clarify:
If using openURL(_:) in a share extension to open the main app would lead to potential issues during App Store submission?
Are there specific guidelines or alternative approaches we should follow to ensure compliance?
Any insights or recommendations would be greatly appreciated.
Thank you!
Topic:
App & System Services
SubTopic:
General
Tags:
Mobile Core Services
Developer Tools
Extensions
when we launch the application and change the language from german/french to english or any other language then in also it is changing app language, but bluetooth connection screen with pair or cancel alert is showing on previous selected language. Since that alert is system alert, is there any wayto debug/resolve that issue.
Topic:
App & System Services
SubTopic:
General
Tags:
iOS
Internationalization
Localization
Core Bluetooth
I have been using the hourly weather forecast API, for some reason sometimes the API fails with 400 Bad Request, but on retrying just a minute later the call successfully returns data. The start and end time are 2 days apart so I don't think it's an issue with the time frame.
The failed calls also don't return any reason so not sure what is the exact failure.
Has anyone encountered this issue or knows why this might be happening??
Thanks!!