Post

Replies

Boosts

Views

Activity

Reply to Does Live Caller ID Lookup entirely replace Call SIP content, or are they ever combined?
"we don't "mix" data like this. There's basically a "hierarchy" of data sources and we only present the data from that data source (whichever one "works"). For example, if there is a contact card for a specific number then that's what we're going to show to that user, regardless of what any other data source would have returned*." @Kevin Elliott When there is an incomming call what is the hierarchy of data sources? I would guess from my observations its: Contacts Call Directory Extension Live Caller ID SIP header content Would that be correct? There's additionally Voip Calls, but beyond that, are there other sources of data where call time information is extracted from to display on the call screen? Thank you
Topic: App & System Services SubTopic: General Tags:
Mar ’26
Reply to For the iOS/Xcode age range validation, what is an invalidRequest error?
@eskimo Hello "Or because you’re trying to decide how to handle the error?" Yes. In the example you gave that's a compile-time programming error. I'd like to know if there are any errors that can occur at run time for example and are re-tryable, for example any errors caused by connectivity failures, in which case if the app tried again then next time the failure might succeed?
Oct ’25
Reply to How to use the declared age range API / Comply with Texas law
I know what the local laws are and how they apply to users. Texas requires this, but the USA has 50 states. If an app is destined for distribution in the USA, in order to comply with Texas, its necessary to force users of the other 49 states to go through this even though they don't live in Texas? Have Apple considered this and provide a solution to this situation? Making all users of the app perform something intrusive and unnecessary just because Texas says its necessary.
Topic: App & System Services SubTopic: General Tags:
Oct ’25
Reply to Callkit call blocking problem
@Kevin Elliot "One thing that I'd like to understand here is what the actual use case/concern is here." What if, as a user, you receive a call from an unknown caller. You don't answer, but instead call that number back to see whom, if anybody, answers. If after doing that you decide the caller is a spammer, or nuisance caller, whatever, and you decide to use an app using CallKit to block the number. Well, that caller is not going to be blocked due to the outgoing call.
Topic: App & System Services SubTopic: General Tags:
Sep ’25
Reply to didRegisterForRemoteNotificationsWithDeviceToken() not called if requestAuthorization() is not called
Ok, so found that that if you don't have the background capability of push notifications to your project then you have to call requestAuthorization() in order to get the push token, as described above. But when you add that background capability, then you can obtain the token without calling requestAuthorization(). What's with that?
Sep ’25
Reply to didRegisterForRemoteNotificationsWithDeviceToken() not called if requestAuthorization() is not called
This can be reproduced from scratch in just 2 minutes: create a brand new iOS app and give it the push notification capability. Change the app delegate template code to this: @main class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { UNUserNotificationCenter.current().delegate = self // UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in // NSLog("Notification permission granted: \(granted)") // DispatchQueue.main.async { application.registerForRemoteNotifications() // } // } NSLog("didFinishLaunchingWithOptions returning") return true } // Called when an APNS token has been sucessfully obtained func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { let token = deviceToken.map { String(format: "%02.2hhx", $0) }.joined() NSLog("Apn Push token: \(token)") } // Called when APN token request fails func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { NSLog("❗️Failed to register for remote notifications: \(error)") } Neither didRegisterForRemoteNotificationsWithDeviceToken() nor didFailToRegisterForRemoteNotificationsWithError() get called. Now uncomment the code and didRegisterForRemoteNotificationsWithDeviceToken() will get called. So based on this experiment, requestAuthorization() is a requirment. Now where does it state that in the Apple documentation, it doesn't, how does this code differ from what's in the Apple documentation, it doesn't. https://developer-mdn.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html#//apple_ref/doc/uid/TP40008194-CH6-SW4
Sep ’25
Reply to Does Live Caller ID Lookup entirely replace Call SIP content, or are they ever combined?
"we don't "mix" data like this. There's basically a "hierarchy" of data sources and we only present the data from that data source (whichever one "works"). For example, if there is a contact card for a specific number then that's what we're going to show to that user, regardless of what any other data source would have returned*." @Kevin Elliott When there is an incomming call what is the hierarchy of data sources? I would guess from my observations its: Contacts Call Directory Extension Live Caller ID SIP header content Would that be correct? There's additionally Voip Calls, but beyond that, are there other sources of data where call time information is extracted from to display on the call screen? Thank you
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Mar ’26
Reply to For the iOS/Xcode age range validation, what is an invalidRequest error?
@eskimo Hello "Or because you’re trying to decide how to handle the error?" Yes. In the example you gave that's a compile-time programming error. I'd like to know if there are any errors that can occur at run time for example and are re-tryable, for example any errors caused by connectivity failures, in which case if the app tried again then next time the failure might succeed?
Replies
Boosts
Views
Activity
Oct ’25
Reply to How to use the declared age range API / Comply with Texas law
I know what the local laws are and how they apply to users. Texas requires this, but the USA has 50 states. If an app is destined for distribution in the USA, in order to comply with Texas, its necessary to force users of the other 49 states to go through this even though they don't live in Texas? Have Apple considered this and provide a solution to this situation? Making all users of the app perform something intrusive and unnecessary just because Texas says its necessary.
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Oct ’25
Reply to Callkit call blocking problem
@Kevin Elliot "One thing that I'd like to understand here is what the actual use case/concern is here." What if, as a user, you receive a call from an unknown caller. You don't answer, but instead call that number back to see whom, if anybody, answers. If after doing that you decide the caller is a spammer, or nuisance caller, whatever, and you decide to use an app using CallKit to block the number. Well, that caller is not going to be blocked due to the outgoing call.
Topic: App & System Services SubTopic: General Tags:
Replies
Boosts
Views
Activity
Sep ’25
Reply to didRegisterForRemoteNotificationsWithDeviceToken() not called if requestAuthorization() is not called
Ok, so found that that if you don't have the background capability of push notifications to your project then you have to call requestAuthorization() in order to get the push token, as described above. But when you add that background capability, then you can obtain the token without calling requestAuthorization(). What's with that?
Replies
Boosts
Views
Activity
Sep ’25
Reply to didRegisterForRemoteNotificationsWithDeviceToken() not called if requestAuthorization() is not called
This can be reproduced from scratch in just 2 minutes: create a brand new iOS app and give it the push notification capability. Change the app delegate template code to this: @main class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { UNUserNotificationCenter.current().delegate = self // UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .badge, .sound]) { granted, error in // NSLog("Notification permission granted: \(granted)") // DispatchQueue.main.async { application.registerForRemoteNotifications() // } // } NSLog("didFinishLaunchingWithOptions returning") return true } // Called when an APNS token has been sucessfully obtained func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) { let token = deviceToken.map { String(format: "%02.2hhx", $0) }.joined() NSLog("Apn Push token: \(token)") } // Called when APN token request fails func application(_ application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: Error) { NSLog("❗️Failed to register for remote notifications: \(error)") } Neither didRegisterForRemoteNotificationsWithDeviceToken() nor didFailToRegisterForRemoteNotificationsWithError() get called. Now uncomment the code and didRegisterForRemoteNotificationsWithDeviceToken() will get called. So based on this experiment, requestAuthorization() is a requirment. Now where does it state that in the Apple documentation, it doesn't, how does this code differ from what's in the Apple documentation, it doesn't. https://developer-mdn.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html#//apple_ref/doc/uid/TP40008194-CH6-SW4
Replies
Boosts
Views
Activity
Sep ’25