Hello all 👋
I'm getting unexpected behavior when testing FinanceKit for my app and was hoping to get assistance.
Pre-reqs (defined at https://developer.apple.com/documentation/financekit):
I've been given the FinanceKit entitlement
I have the com.apple.developer.financekit entitlement set to financial-data
I also have NSFinancialDataDescription set in Info.plist.
I am targeting iOS 17.4 (a physical device)
When I call FinanceStore.shared.requestAuthorization(), I immediately get a denied status without any alert dialogs.
No data about my app is listed in Settings > Privacy & Security > Wallet
Any idea what else is needed here?
Thanks so much for the help!
Code
import SwiftUI
import FinanceKit
@main
struct myApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
struct ContentView: View {
@State private var status: AuthorizationStatus?
@State private var dataAvail: Bool?
var body: some View {
VStack {
Text("Data available \(String(describing: dataAvail))")
Text("Auth status \(String(describing: status))")
Button("Get Status") {
Task{
dataAvail = FinanceStore.isDataAvailable(.financialData)
status = try await FinanceStore.shared.authorizationStatus()
}
}.buttonStyle(.borderedProminent)
Button("Request Auth") {
Task{
do{
status = try await FinanceStore.shared.requestAuthorization()
}catch{
print(error)
}
}
}.buttonStyle(.borderedProminent)
}
.padding()
}
}
#Preview {
ContentView()
}
app.entitlements:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.financekit</key>
<array>
<string>financial-data</string>
</array>
</dict>
</plist>
Info.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSFinancialDataDescription</key>
<string>Budget across all your accounts</string>
</dict>
</plist>
VIdeo demo:
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
Activity
I am developing a macOS word-processing app that should be distributed via the Apple App Store. Some of the app's functions like generating HTML and PDF exports should be automatable via Shortcuts and via shell scripts.
To support the latter, I plan to include a command line tool inside the app that can be called from the Terminal or a shell script. The tool should be able to instruct the main app to then perform the desired commands.
A well-known AppStore app that uses this design is BBEdit which also contains multiple command line tools that offer functionality from the main app to users of the Terminal.
My technical questions now are:
Should the command line tool executable be sandboxed and if yes, how?
Even after many trials, I have not found a way to make a working sandboxed command line tool. If a sandboxed tool is started from the Terminal, it is immediately terminated with an exception in _libsecinit_appsandbox.cold.12. I am aware of the Apple developer documentation article Embedding A Helper Tool In A Sandboxed App, but it addresses a different architecture in which the helper tool is started from the main app and therefore is able to inherit its sandbox.
BBEdit is only sandboxing the main app, but not its embedded command line tools and is still allowed in the App Store. Is this the way to go for me as well or does BBEdit get some special treatment in the App Store?
How can the command line tool pass the permission to access files to the main app?
As my main app is sandboxed, it needs explicit permission from the user to be able to access files. Users of a command line tool give this permission by providing file paths as arguments. How can I pass these permissions along to the main app? BBEdit is able to do this even when the user has not given it full-disk access. I know that it is using Apple Events for the communication between the command line tool and the main app, but I am not sure how this allows to pass permissions. Can anyone shed light on how to implement a solution here?
Thanks!
Using both the Apple sample app for passkeys (link below) and another barebones sample app from github (link below), we are getting this same error when trying to retrieve a user's passkey that has been created from our website associated with the sample app:
ASAuthorizationController credential request failed with error: Error Domain=com.apple.AuthenticationServices.AuthorizationError Code=1004 "(null)"
Error: ["NSLocalizedFailureReason": Unable to verify webcredentials association of TEAMID.com.company.product with domain app.company.com. Please try again in a few seconds.]
Note I have replaced TEAMID, the bundle id and the website id here, but the values match our site association file, which has this content:
{
"webcredentials": {
"apps": [ "TEAMID.com.company.product" ]
}
}
and is hosted at:
https://app.company.com/.well-known/apple-app-site-association
(returned with Content-Type: application/json header)
The enum values for ASAuthorizationError.Code I believe are:
canceled: 1000
failed: 1001
invalidResponse: 1002
notHandled: 1003
notInteractive: 1004
unknown: 1005
Thus we are getting notInteractive, which according to another forum post here, we should not be seeing. With both sample apps, I've made sure the request to perform authentication is triggered from a button press by the user. Can someone please help us figure out why we are getting this error?
Xcode version: 16.2
MacOS version: 15.2
iOS version: 18.2
iPhone model: iPhone SE (MHGT3X/A)
Link for Apple sample app:
https://developer.apple.com/documentation/authenticationservices/connecting_to_a_service_with_passkeys
Link for Github sample app:
https://github.com/hansemannn/iOS16-Passkeys-Sample
Topic:
App & System Services
SubTopic:
General
Tags:
Authentication Services
Passkeys in iCloud Keychain
I have my phone set to small icons on home screen, but it sill doesn't show the name of the app like when it is on large icons, please fix or just add names to large icons too so i stop running into this glitch.
Topic:
App & System Services
SubTopic:
General
ios ipad 18.3 on iPad 7. generation sound is missing - in YouTube the advertising videos never starts
Topic:
App & System Services
SubTopic:
General
Hi,
we have a CFArray, which we store in a CFDictionary and this in a SCPreference. When loading it from the SCPreference the order of the CFArray contents is undefined. All data is there though.
Is this the intended behaviour? Is it possible to ensure the correct data order?
Thanks, any hint is highly appreciated!
I'm trying to add an icon to support dark and tinted icons in Xcode 16. The apple's guide document says, "You provide a transparent dark icon." However, at the bottom of the guide, iOS transparency is no. I wonder if it's okay to make the background of the dark icon.
Topic:
App & System Services
SubTopic:
General
I recently tried Apple TV after using android tv for a long time.
The main missing item is having a browser. I could not find one.
i tried building Firefox for TVOS, it failed with WebKit not available.
Is there a way to build WebKit and package it along with a browser package while building it?
Hello!
It's my first time posting in this forum. Apple Intelligence is enabled by default in Workspace ONE (WS1). I was wondering if Apple Intelligence can access or process corporate data within (WS1) corporate apps, which are containerized?
Thank you!
Topic:
App & System Services
SubTopic:
General
I am experiencing difficulties in fully integrating my Apple Watch with a supervised iPhone under MDM control. While I have successfully paired the watch with the iPhone, I am facing issues with some apps not syncing or appearing on the Apple Watch. This issue persists despite having allowed their bundle IDs in the MDM’s whitelist. Could anyone provide guidance on which specific Apple bundle ID is crucial for maintaining the connectivity and functionality between the iPhone and the Apple Watch? Understanding this would help in ensuring that the necessary bundle ID is whitelisted in the MDM settings, thus resolving the app visibility and functionality issues on the Apple Watch.
Topic:
App & System Services
SubTopic:
General
Tags:
Watch Connectivity
watchOS
Bundle ID
Device Management
We’re trying to enable deep links for our application com.remonon.remonon. Only links that start with https://remonon.com/app/ should redirect to our app.
I’ve closely followed the tutorial at https://developer.apple.com/documentation/xcode/supporting-associated-domains.
Our apple-app-site-association is correctly placed at https://remonon.com/.well-known/apple-app-site-association and looks like this:
{
"applinks": {
"details": [
{
"appIDs": [
"25N8TLPALL.com.remonon.remonon"
],
"components": [
{
"/": "/app/*",
"comment": "Only URLs under /app/ will be handled as deep links"
}
]
}
]
},
"webcredentials": {
"apps": [
"25N8TLPALL.com.remonon.remonon"
]
}
}
Our *.entitlements looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>production</string>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:remonon.com</string>
<string>webcredentials:remonon.com</string>
</array>
<key>com.apple.developer.default-data-protection</key>
<string>NSFileProtectionComplete</string>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.remonon.remonon</string>
</array>
</dict>
</plist>
Our apple-app-site-association was published two weeks ago to make sure apple’s caches were able to catch up in the meantime.
Still, opening the link https://remonon.com/app/test on a real device with our app installed does not open our app but safari.
A while ago, when all remonon.com-urls should open our app instead of only those which have the "app" path prefix, the deep links was working perfectly fine.
What am I missing?
Topic:
App & System Services
SubTopic:
General
I have an iOS app, watchOS app, and iOS Widget that shows the most recent data in the database.
The watch app sends data to the iOS app over the WCSession and is received in session(didReceiveMessage, replyHandler). After that data is processed, reloadAllTimelines() is called.
When running in Simulator or on device plugged in to debugger, it works, the widget updates when the app is closed (in background, even if force quit).
But when running TestFlight or App Store build, the data is still processed and saved to Core Data (I open the app and it's there), but the widget doesn't update.
It seems that reloadAllTimelines only works when the app is in foreground (at least in non debug builds). I dont have an iOS 17 device to check but I think this is a recent bug with iOS 18.
Speech Framework
I've been checking for SFSpeechRecognitionMetadata to determine the end of a sentence when using Voice Recognition.
Yet it doesn't detect small pauses but only large ones, so that I've transcribed basically an entire paragraph before going onto the next one.
Besides implementing your own timer, are there any other ways to have more natural pauses to detect the end of sentences, similar to the browser's Web Speech recognition? Since it's in Safari, I assume there should be some similar feature that can be equivalent in MacOS.
Hi everyone,
We came an issue that, In some scenarios in our app we cannot fetch any resources from device (Photo and Contact).
One case we catched is putting app in background and spending time in other commonly used apps and coming back to our app cause this issue but there is a small chance that get this issue during using the application.
In cell, we are trying to fetch the image like this
imageFetchTask = Task {
let image = await CompositionRoot.shared.photosManager.image(requestType: .imageCollections, forId: photoAsset.photoId)
self.photoImageView.image(image)
}
and inner layers of this code we get the PHAsset and request image
PHAsset.firstAsset(for: id)
let manager = PHImageManager.default()
manager.requestImage(for: asset, targetSize: request.targetSize, contentMode: .aspectFill, options: request.options) { (image, info) in
continuation.resume(returning: image)
}
We figured out that issue not happening only in Photos also Contacts and
any web request. So any help according to this situation is well appreciated.
Thanks
Topic:
App & System Services
SubTopic:
General
Tags:
Contacts
PhotoKit
Background Tasks
Background Assets
When I open Iplaytv on my Apple TV it says refresh needed but I don’t know how
Hi,
My iphone 12 has been restarting unexpectedly, and often followed by wifi, bluetooth, and airdrop grayed out. I had to force restart/shutdown several times to turn it on again.
Found this analytics after crash. Please help if somebody know what this means:
ExcUserFault_CategoriesService-2024-12-23-064503.ips
Hello, I am currently optimizing the performance of my application. I would like to obtain information about users being killed after leaving the application in the background, in order to evaluate whether the application is running normally in the background. I noticed that there is a Background Termination information in Xcode ->Organizer that records background exits. I would like to know the rules for obtaining this information and what is the health standard for this indicator on the Apple side?
I have an app written in swift.
It has multiple pods dependencies installed.
When the app is generated with Xcode 15.4 the size of app is ~148Mb
and when the same app is generated with Xcode 16.2 the size is ~246MB
When I extracted and analysed the app, it was observed that one of the framework installed via pods Dependencies("DocumentReaderCore") was consuming more size(42.9 MB vs 215 MB) the DocumentReaderCore present in the Payload/.app/Frameworks/DocumentReaderCore.framework/DocumentReaderCore was of type linux executable when generated using Xcode 15.4 vs the other was od document type and size was 215MB.
Hi All,
I have created a Push Notification certificate from my Apple Developer account. After downloading the aps.cer file and adding it to my Keychain, the certificate was added successfully, but the private key is missing.
Has anyone encountered a similar issue in the past? What could be causing this problem?
Hi,
I'm trying out the beta for music kit. In the current version of my app, my widget can show multiple albums. I preload the images of the album covers. In the beta's the url that is returned for the artwork starts with: "musickit://", which does not work with URLSession. How can I preload the data using the new url scheme?
Current code:
func fetchArtworkFor (musicID: MusicItemID, url : URL?) async throws -> UIImage? {
guard let url = url else {
return nil
}
let urlRequest = URLRequest (url: url)
let data = try await URLSession.shared.data(for: urlRequest)
let image = UIImage(data: data.0)
return image
}
// Some other function
for album in albumsToShow {
if let url = album.artwork?.url(width: context.family.imageHeight, height: context.family.imageHeight), let image = try? await fetchArtworkFor(musicID: album.id, url:url) {
images[album] = image
}
}