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 tofinancial-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: