Post

Replies

Boosts

Views

Activity

Age verification: How to obtain the method of age assurance?
In the summary documentation about the declared Age Range API:https://developer.apple.com/news/?id=2ezb6jhj It states: "The API will also return a signal from the user’s device about the method of age assurance, such as credit card or government ID" But if the api itself, and its documentation is examined, there is no such mechanism nor mention of it: https://developer.apple.com/documentation/declaredagerange/agerangeservice So my question is, is the first documentation incorrect, if not, then where and how to access the method of age assurance?
1
1
122
Nov ’25
The relationship between age verification and permission kit isn't clear (IMO)
I'm trying to digest and understand the new set of APIs relating age verification that were released last week. I have say that without some cohesive overview, example app, just a simple diagram showing the relationship of everything, its not at all clear to me what's going on nor what an app developer is expected to do to use these apis (I'm a senior engineer with 15 year's iOS experience, but hey maybe I'm just a bit slow in the head). I have a few questions, but the topic of this post is what is the relationship between age verification i.e. between the declared age range/significant change and Permission Kit? The documentation for the former mentions the Significant Change API/Topic (https://developer.apple.com/news/?id=2ezb6jhj / https://developer.apple.com/documentation/PermissionKit/SignificantAppUpdateTopic). Now the Significant Change Topic is documented as being part of PermissionKit, however the documentation for that (https://developer.apple.com/documentation/permissionkit) States emphatically at the top: "Communication experiences using the PermissionKit framework are only available using iMessage." Meaning you can't use PermissionKit for anything other than iMessage? If it doesn't mean that, then why does it state so? If it does mean that, then how does an app which has nothing to do with iMessage make use of Significant Change - because this documentation:https://developer.apple.com/news/?id=2ezb6jhj Is talking about using significant change for all apps, not iMessage. So there is a contradiction here.
1
4
180
Nov ’25
Any concrete info on when Apple apply server side APNS throttling?
We have an app which gets sent APNSs by the server and use a Notification Service Extension to intercept them. In my observations I've never seen throttling applied on the device to these pushes (unlike app directed push where its easy to observe happening if you let the batter run low for example). The Apple documentation says it may perform server side throttling, but when, how often, under what circumstances? If the app has 30 million users and the server sends them 10m or 100 pushes per day will it get throttled? Does anybody have any have any documented or observed info on this.
0
0
666
Oct ’21
Why does the usernotifications.filtering entitlement stop UIScreen.main.bounds from working?
If UIScreen.main.bounds is called from within a notification service extension then the values returned as as you'd expect. But then if the com.apple.developer.usernotifications.filtering entitlement is added to the extension the values returned are (0.0,0.0,0.0,0.0). Why is that, why does this entitlement stop UIScreen.main.bounds from working?
0
0
647
Sep ’22
iOS 16.1 is setting Personal Focus Smart Activation to be on by default - is there a way an app can detect if a focus mode currently active or not
As a user, I've been hit several times missing calls and notifications when I was expecting them. I've just figured out why that is - its because iOS 16.1 is automatically setting Smart Activation to on for Personal Focus. So I kept missing phone calls because the iPhone had been turning on Personal Focus when I was unaware it was. As well as blocking calls, it also doesn't display any notification. (I never use this focus feature, I didn't even know it existed until now, so for it to be enabled by default is absolutely ridiculous behavior. This is iOS 16.1 beta yet but its so close to the release date of 16.1 it must be the final behavior). Now with my developer hat on, I would like my application to detect if notifications are being suppressed due to a focus's do not disturb. Is there an API available for an app to determine if a notification has not been displayed to the user due to this for non communication type apps? Just a regular app that receives user-directed push messages and needs to know if they were displayed to the user.
0
0
1.4k
Oct ’22
Why do some call blocking apps have multiple call extensions instead of just one?
Truecaller uses 4 call extension, Hiya has 3 and RoboKiller has 2. But why? There's no limitation or lack of functionality from just using one, why have multiple with the additional complexity of managing multiple ones within the app. I can't think of any possible reason for this, so I'm mystified why so many call blocking/identification apps have lots of them. Are they storing data in a database which doesn't support lazy loading / the ability to read a set of data in chunks, so instead they create multiple databases?
0
0
566
Oct ’22
So its not possible for an app to have more than one action extension?
I added two actions extensions to my app, however if from the iPhone's call history, Share Contact is selected, then Edit Actions, then only one of the action extensions is visible (they both have the same NSExtensionActivationRule, but the intention being they'll have different action names and perform different actions). So presumably, having more than one action extension just isn't possible. Could somebody please confirm if that is the case or not.
0
0
496
Oct ’22
Voip calls: how to register users id, and how to generate test voip calls to test app
I've found literally dozens and dozens of tutorials of how to deal with a voip push, but none of them, not one, make any mention at all of how to set things up prior to that, nor how to test the code they've just written. Sure, you can send a voip push easily enough using a push tool or push script, but that's only part of the picture, none of these tutorials mention anything about actually making a voip test call to accompany the test voip push. Are there any tools, or web portals etc. that can be used to generate a voip call to a handset to set the voip call side of things in addition to the voip push handling? Also, none of the tutorials mention what's needed to be done by the app in addition to implemented code to handle the voip push, specifically I mean how does the server sending the push know which user is associated with the push token. Surely there has to be a step where the app performs some sort of sip registration with a server before it deals with a voip push. None of these so called tutorials show any of that, all these tutorials just show a small portion of a whole, does anybody know of one that actually shows the whole?
0
0
678
Nov ’22
CallKit - when is reportNewIncommingCall() used versus reportNewIncommingVoIPPushPayload()?
I'm confused by when CXProvider:reportNewIncommingVoIPPushPayload() is intended to be used versus CXProvider:reportNewIncommingCall(). All the iOS tutorials about VoIP push talk about sending a voip push to the app and the app calling CXProvider:reportNewIncommingCall() and then proceeding to deal with the VoIP call. However in this Apple documentation https://developer.apple.com/documentation/callkit/sending_end-to-end_encrypted_voip_calls It talks about sending a regular push, not a voip push, which is intercepted by a notification service extension, and the extension calling CXProvider:reportNewIncommingVoiPPushPayload(). I'm confused - when there's an incoming VoIP call should a voip push be sent to the app and reportNewIncommingCall() called or a regular push sent to the notification extension and reportNewIncommingVoiPPushPayload() called?
0
0
1.1k
Nov ’22
Can VoIP call's be "Blocked" on the handset?
CallKit provides the ability to block regular calls via the call extension. And CallKit also provides the ability to integrate VoIP calls with the phone's call screen/user experience etc. However the blocking aspect of CallKit seems to have no bearing on the VoIP aspect. When the app receives a Voip Push it has to call CXProvider.reportNewIncomingCall() and that displays a call screen. If the parameters passed to reportNewIncommingCall() a handle of the .phone with a phone number registered for blocking with CallKit, the call screen still displays. Its not use to call CXProvider.invalidate() immediately because the call screen will still display, though its only displayed for a brief time its still very very obvious and noticeable. Therefore there appears to be no way of "blocking" the call, blocking is in quotes because from the user's perspective you would not expect to see the call screen, but is there is no way of stopping it from appearing, even if that appearance is only brief?
0
0
643
Nov ’22
What is a ballpark level of effort develop the code to enable an app to receive a VoIP call?
Whenever one googles for VoIP and iOS there's always a lot of results that appear that tell you about using CallKit. However CallKit on its own is useless, it just provides a GUI/OS integration of VoIP, but not the actual SIP nor VoIP things themselves. There's lots of 3rd party libraries out that, however they all include licensing, or paying a fee, and are tied to the 3rd party's servers. Approximately how much effort is it to develop from scratch in Swift code to enable an app to receive VoIP calls (it doesn't need to make outgoing VoIP calls, and and only audio, not video needs to be supported). Here's what I think would be involved: Send information from the app to a SIP registrar. How difficult is this? Enable VoIP push handling in the app, send the Voip Push token to a server. Handle incoming VoIP push. Implement the VoIP transport, audio handling etc., for incoming VoIP Integrate with the OS I know how to do 2, and for 4 there's loads of tutorials on CallKit. What I'd like to determine is what is involved and a level of effort for implementing 1) and 3) without using a 3rd framework. Anybody done this themselves and has a rough idea?
0
0
768
Nov ’22
What size image to programmatically add to a contact such that it'll appear on the call screen nicely?
I want to programmatically create a contact with an image with the result that when the iPhone receives a call from the number associated with that contact its image will appear on the incoming call screen (occupying the full screen, not the little tiny icon variation). But I'm having a hell of a job trying to figure out what dimensions should be used for the image to add to the contact. If on the iPhone I take a screenshot and add that manually to a contact then make a call, then the call screen more or less displays the entire screenshot almost the same as the actual desktop. The call screen appears to be slightly magnifying the image. So whatever size the screenshot is should be close enough for the contact image. I've got an iPhone 14 pro and its UIScreen.main.bounds is 932 by 430. If I export an iPhone screenshot to a Mac, I can see its image size is 2796 by 1290, which is exactly 3 times the bounds size. So I created an image of size 2796 by 1290 and programmatically added it to a contact (using CNMutableContact.imageData = myUIImage.pngData(). But when a call arrives the image that gets displayed on the call screen is way way way out of whack and alignment. Same too if I add am image of size 932 by 430 (i.e. without the 3 times factor). I've done lots of experiments but I just can't figure out what size image I should add to the contact. Does anybody happen to know? (I exported the contact where I manually added the screenshot image as a .vcf to see what image size they use, but it doesn't export the full image that's actually displayed during a call screen, it just exports a truncation of the full image which is a square of 1200 by 1200.)
0
0
837
Dec ’22
A small number of testers never receive Testflight invites/redemption codes
There's about 20 internal testers on our Testflight account, but a couple of them just never ever receive the invites/redemption codes so its impossible to get them set set up to be able to test the app. They are added to the Internal Testing App Store Connect Users group, and I've also tried creating a new group and adding them to that as well as and instead of the App Store Connect Users group. These groups are added as testers of builds, and for the other 20 users their status says "Installed" but for a couple of testers their status always shows as "Invited Resend Invite". The problem is, even if I click on Resend Invite an infinite number of times, these testers never receive anything. Never. Not after waiting an hour, 10 hours, a day, a week, a month. Click on click on click on Resend Invite and it does nothing, they never get anything. No emails are not going into their trash/spam folder. I've tried deleting the testers entirely from the entire developer account, and then when I re-add them back, then in that case they do get an email inviting them to join the developer account, but then they don't subsequently receive a TestFlight invite / code when added to a build. The internal testers are all members of the same organization, so all have the same form of email address which is being used. 20 or 30 or them its ok, but for a couple of testers Testflight just hates them. For one user, we tried everything and spent literally weeks, just was never ever able to get them set up and eventually had to give up. Our IT department had to specially create a new email for them, just to try and get them added to TestFlight. Hey and guess what, the new email worked, while the old one never did. But this isn't a solution, can't ask the IT dept to create new emails, and shouldn't have to. But now the same thing is happening again to another tester. Why does clicking Resend Invite not do anything? How can I force things and get this tester to receive an invite?
0
0
727
Dec ’22