I'm trying to find what/if the iOS equivalent to Android's Sip range of APIs is. For example SipAudioCall is for handling the audio calls, SipManager for initiating SIP connections.
I'm aware of iOS's CallKit component and have read its documentation, however all it seems to provide basically is a listening mechanism for Voip Pushes indicating a Voip call request and a means of integrating Voip Calls with the native call screens/system.
I can't see anything in the Callkit documentation or tutorials to do things like initiate a SIP connection, or register SIP identify/IP, or start a VoIP call, or actually manage an incomming VoIP call.
Could somebody point me to the documentation for those APIs if they exist, if they don't, does that mean if you want to develop a VoIP app you have to implement a load of stuff from scratch?
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Released app repeatedly crashing on launch, Crashlytics is enabled but no crash reports getting sent
I've users reporting a crash on app launch which I'm unable to reproduce. The app has Crashlytics but none of the crashes are getting sent to the Crashlytics console (Crashlytics is set up correctly and reports can get through for when the app doesn't crash on startup, but not getting sent for this).
I've managed to get a crash report off a phone, but can't see anything useful. Are there any clues in here as to the possible cause?
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Termination Reason: SIGNAL 6 Abort trap: 6
Terminating Process: AppName [566]`
Last Exception Backtrace:
0 CoreFoundation 0x192622870 __exceptionPreprocess + 164
1 libobjc.A.dylib 0x18a94fc00 objc_exception_throw + 59
2 AppName 0x1046b7450 0x10401c000 + 6927440
3 AppName 0x104683990 0x10401c000 + 6715792
4 AppName 0x10468542c 0x10401c000 + 6722604
5 AppName 0x1040b5900 0x10401c000 + 628992
6 AppName 0x1040b593c 0x10401c000 + 629052
7 AppName 0x10408a3b0 0x10401c000 + 451504
8 AppName 0x10407f320 0x10401c000 + 406304
9 AppName 0x10407f4a4 0x10401c000 + 406692
10 AppName 0x1040346c0 0x10401c000 + 100032
11 UIKitCore 0x194969ddc -[UIApplication _handleDelegateCallbacksWithOptions:isSuspended:restoreState:] + 319
12 UIKitCore 0x194968f44 -[UIApplication _callInitializationDelegatesWithActions:forCanvas:payload:fromOriginatingProcess:] + 2855
13 UIKitCore 0x194967f28 -[UIApplication _runWithMainScene:transitionContext:completion:] + 855
14 UIKitCore 0x194967b74 -[_UISceneLifecycleMultiplexer completeApplicationLaunchWithFBSScene:transitionContext:] + 131
15 UIKitCore 0x1948e4434 _UIScenePerformActionsWithLifecycleActionMask + 111
16 UIKitCore 0x19496bb70 __101-[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:]_block_invoke + 215
17 UIKitCore 0x19489329c -[_UISceneLifecycleMultiplexer _performBlock:withApplicationOfDeactivationReasons:fromReasons:] + 219
18 UIKitCore 0x194891d14 -[_UISceneLifecycleMultiplexer _evalTransitionToSettings:fromSettings:forceExit:withTransitionStore:] + 607
19 UIKitCore 0x19489167c -[_UISceneLifecycleMultiplexer uiScene:transitionedFromState:withTransitionContext:] + 247
20 UIKitCore 0x19489154c __186-[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:]_block_invoke + 147
21 UIKitCore 0x194891454 +[BSAnimationSettings(UIKit) tryAnimatingWithSettings:fromCurrentState:actions:completion:] + 735
22 UIKitCore 0x194890cdc _UISceneSettingsDiffActionPerformChangesWithTransitionContextAndCompletion + 223
23 UIKitCore 0x19489098c -[_UIWindowSceneFBSSceneTransitionContextDrivenLifecycleSettingsDiffAction _performActionsForUIScene:withUpdatedFBSScene:settingsDiff:fromSettings:transitionContext:lifecycleActionType:] + 315
24 UIKitCore 0x194c13520 __64-[UIScene scene:didUpdateWithDiff:transitionContext:completion:]_block_invoke.225 + 611
25 UIKitCore 0x19488fb10 -[UIScene _emitSceneSettingsUpdateResponseForCompletion:afterSceneUpdateWork:] + 215
26 UIKitCore 0x19488f980 -[UIScene scene:didUpdateWithDiff:transitionContext:completion:] + 243
27 UIKitCore 0x1949a826c -[UIApplication workspace:didCreateScene:withTransitionContext:completion:] + 507
28 UIKitCore 0x1949a8004 -[UIApplicationSceneClientAgent scene:didInitializeWithEvent:completion:] + 287
29 FrontBoardServices 0x1ab0766d4 -[FBSScene _callOutQueue_didCreateWithTransitionContext:completion:] + 323
30 FrontBoardServices 0x1ab076570 __92-[FBSWorkspaceScenesClient createSceneWithIdentity:parameters:transitionContext:completion:]_block_invoke.108 + 279
31 FrontBoardServices 0x1ab07519c -[FBSWorkspace _calloutQueue_executeCalloutFromSource:withBlock:] + 167
32 FrontBoardServices 0x1ab080f8c __92-[FBSWorkspaceScenesClient createSceneWithIdentity:parameters:transitionContext:completion:]_block_invoke + 351
33 libdispatch.dylib 0x19a4cf300 _dispatch_client_callout + 19
34 libdispatch.dylib 0x19a4d2d48 _dispatch_block_invoke_direct + 283
35 FrontBoardServices 0x1ab071520 __FBSSERIALQUEUE_IS_CALLING_OUT_TO_A_BLOCK__ + 51
36 FrontBoardServices 0x1ab0714a0 -[FBSMainRunLoopSerialQueue _targetQueue_performNextIfPossible] + 239
37 FrontBoardServices 0x1ab071378 -[FBSMainRunLoopSerialQueue _performNextFromRunLoopSource] + 27
38 CoreFoundation 0x19256d31c __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 27
39 CoreFoundation 0x19256c598 __CFRunLoopDoSource0 + 175
40 CoreFoundation 0x19256adac __CFRunLoopDoSources0 + 339
41 CoreFoundation 0x192569a88 __CFRunLoopRun + 827
42 CoreFoundation 0x192569668 CFRunLoopRunSpecific + 607
43 GraphicsServices 0x1d648f5ec GSEventRunModal + 163
44 UIKitCore 0x1949850d4 -[UIApplication _run] + 887
45 UIKitCore 0x194984710 UIApplicationMain + 339
46 AppName 0x10402bba8 0x10401c000 + 64424
47 dyld 0x1b5be6d44 start + 2103
Thread 0 posted as comment
In this Apple documentation https://developer.apple.com/documentation/xcode/acquiring-crash-reports-and-diagnostic-logs
it says "If a customer reports a crash, they can transfer the crash report to either a Mac or Windows computer. See Find device crash and energy logs on a Mac or Windows computer."
In the page that links to (https://help.apple.com/xcode/mac/current/#/dev0f3181c2c) it says "When an app crashes or uses excessive CPU on a device, the operating system creates a log of that event. The next time you connect the device to your Mac, the system downloads those records (known as crash or energy logs) to your Mac. "
But where on your Mac, it doesn't say where. Where does it the Mac download the crash reports to?
Seeing a sudden influx of crashlytics error in an old version as soon as the new version is released
Last week we released an update to the app in the app store, version N.0.
It was on a phased rollout. Several users reported a crash so the roll out was paused.
A fix to the crash was released to the app store this morning, version N.1 and the rollout resumed.
However immediately following the release of N.1 to the app store there are lots of crash reports arriving in Crashlytics all of a sudden for version N.0.
Its as if N.0 has suddenly become available on the app store and everybody is downloading it, but that isn't the case, its definately N.1 displayed in the app store.
I don't understand why all these reports from a version of the app that is now no longer available has started arriving? Could be there some caching of versions in the app store or something and when N.1 release and the rollout resumed, the app store is actually automatically updateing people's phones with N.0 instead?
(There's a small number of non crash reports being reported in Crashlytics for N.1, proving its live and downloaded on some phones)
An hour ago I received a new iPhone 15 Pro, however I can't enable developer mode for it.
Developer mode doesn't appear in the Setting | Privacy & Security | Security section. However I read thats to be expected now for iOS 17, and that it can be enable within XCode (although I didn't have to do that with any of my other phones which have iOS 17 on them, and for all of those Developer Mode does appear in Settings).
However XCode (v15, release version not beta version) doesn't recognize the device.
On the iPhone I've Trusted the Mac and restarted the phone and XCode but XCode just won't see it.
Apple Configurator 2 has no problem seeing/connecting to the iPhone, nor does the iExplorer app, but XCode just won't.
What can I try next?
Many months ago Apple stated:
"From Fall 2023 you’ll receive an email from Apple if you upload an app to App Store Connect that uses required reason API without describing the reason in its privacy manifest file"
Yet it seems nobody has received them?
So whats the latest situation with this, if there's a mandatory requirement to add the privacy manifest by Spring how can people meet that now looming deadline if they haven't received the email that was due in the Fall?
While searching I've seen more than one url form used for launching from an app into the iPhone's App Store app. Both of these work, but is one preferred to the other, if so why, or are they exactly equivalent?
let appStoreLink1 = "https://itunes.apple.com/us/app/apple-store/idNNNNN?mt=8"
let appStoreLink2 = "https://apps.apple.com/us/app/name-of-app/idNNNNN"
if let url = URL(string: appStoreLink1 or appStoreLink2), UIApplication.shared.canOpenURL(url) {
UIApplication.shared.open(url, options: [:], completionHandler: {(success: Bool) in
...
I have account holder/admin status for an Apple developer account.
I would like to add a user to the account and grant them the ability to be able to generate app ids, apply for entitlements, generate/edit provisioning profiles, register devices to an app id, upload the app to Testflgith etc. etc. for just one specific app.
However it seems this isn't possible.
If I add them with the App Manger role, then its possible to specify the particular app which they can manage, however the App Manager role hides the Certificates, App IDs, & Profiles section, meaning they are unable to do many of these things listed about.
If I change their role to Admin, then now the Certificates, App IDs, & Profiles section is now available to them, but then the apps automatically changes to all apps and its not possible to select just one.
This seems like a very common scenario that occurs, but its not possible to enable. Whereby company X wants to publish an app and sub-contracts the development of that app to company Y. It seems its not possible to register developers from company Y with the level of access required to develop the app without simultaneously limiting their powers to just one app.
You have a choice, give them all access to all apps, or insufficient access to just one app.
Is there something I've overlooking?
I just received a message upon app submission saying
"Although submission for App Store review was successful, you may want to correct the following issues in your next submission for App Store review.
Invalid privacy manifest - The PrivacyInfo.xcprivacy file from the following path is invalid"
This is due to a 3rd party dependency being used by the app, but the thing is I was able to submit the app a few weeks ago, and a few months ago prior to that, and this warning wasn't present despite the exact same version of the 3rd party dependency being in those previous submissions as for the current submission.
As the deadline for including privacy manifests was earlier this year, and as the message says " you may want to correct the following issues in your next submission", then whats the point, is there any point in this message?
The wording doesn't even say must or should resubmit, it simply says "may like to".
Is there therefore any need to address this or not bother if the message just says "may like to"?
I made an update to my app's code to make use of the new Contact access limited permission (CNAuthorizationStatusLimited), like so:
if (@available(iOS 18.0, *)) {
switch ([CNContactStore authorizationStatusForEntityType:CNEntityTypeContacts]) {
case CNAuthorizationStatusLimited:
<snip>
However, later I discovered there's another totally unrelated issue which only manifests when the app is built with XCode 16. It isn't a trivial change to workaround, so for now I would like to make a release to the app store which makes use of the new CNAuthorizationStatusLimited status but is built using XCode 15.
However, building with XCode 15 results in a "Use of undeclared identifier 'CNAuthorizationStatusLimited' error.
If the code were making use of a new API, I could workaround using a selector for example, however as this is an enum, is there Is there any workaround possible for this - or its just not possible to build using XCode 15 and the source code contain references to CNAuthorizationStatusLimited?
In order to create a Message Filter Extension it is necessary to set up Shared Web Credentials.
I'd like to form an understanding of what role SWC plays when the OS is making request to the associated network service (when the extension has called deferQueryRequestToNetwork()) and how this differs from when an app directly uses Shared Web Credentials itself.
When an app is making direct use of SWC, it makes a request to obtain the user's credentials from the web site.
However in the case of a Message Filter Extension, there aren't any individual user credentials, so what is happening behind the scenes when the OS makes a server request on behalf of a Message Filtering Extension?
A more general question - the documentation for Shared Web Credentials says "Associated domains establish a secure association between domains and your app.".
Thank you
Topic:
App & System Services
SubTopic:
Networking
Tags:
iOS
SMS and Call Reporting
Authentication Services
I asked this question of AI and it said that yes it was possible, and gave some sample code
override class func filterConfiguration() -> ILMessageFilterExtensionConfiguration {
let config = ILMessageFilterExtensionConfiguration()
// You can specify multiple network URLs
config.networkURLs = [
URL(string: "https://api1.example.com/filter")!,
URL(string: "https://api2.example.com/filter")!
]
return config
}
And said the OS will try the first, and if there's no response within the first few seconds it'll move onto the second.
However, there is no such class as ILMessageFilterExtensionConfiguration AFAICT, if there is then how to access/use it, if there isn't, then I wonder how the AI counjured it up?
If multiple urls can be specified, then can the extension also specify a particular API to use and switch between them at some point?
When does the OS call filterConfiguration()?
The example database/server provided by Apple for Live Caller ID contains a hardcoded database with a tiny number of pre-defined numbers.
However, its not expected to be representational of an live real world usage server.
But the question is how can that be accomplished if its a requirement that the data be KPIR encrypted?
In real world scenarios, the factors that effect whether a number should be blocked or not are continually changing and evolving on a minute-by-minute basis and new information becomes available or existing information changes.
If the database supports tens of millions or hundreds of millions of constantly changing phone numbers, in order to meet the requirements of the Live Caller ID being KPIR encrypted, that would imply the database has to re-encrypt its database of millions endlessly for all time.
That seems unfeasable and impractical to implement.
Therefore how do the Apple designers of this feature envisage/suggest a real-world server supporting millions of changing data should meet the requirement to be KPIR encrypted?
If I install RealmSwift into an ios app using SPM, I have no problems.
However if I install it into an ios framework, then when building there is this error:
error: missing required modules: 'Realm.Private', 'Realm', 'Realm.Swift'
I have discovered that if I change the import statement from:
import RealmSwift
to
private import RealmSwift
then doing that makes this build error goes away (but doing that isn't a feasible workaround as I would like to publicly export classes stored in Realm from the framework).
There's no point in posting issues with Realm on their support board as its being deprecated and its tumble weeds on their forum.
But I would be very interested in hearing from the Apple expects explanation or speculation on:
why is importing the same framework via SPM into a framework xcode project resulting in different behavior then when importing it into an app?
why would changing import to private import make the build error go away?
TIA
There's plenty of articles out there about programatically grouping push notifications. However I have tried setting the thread-id in the push payload when sending a push, or setting the threadIdentifier for a received push in a notification service extension to be the same for several pushes.
But if within the iPhone Settings / Notifications the user selects to display pushes as List and turns off Notification Grouping, then each notification resulting from the push appears on its own separately.
Is there something other than thread-id/threadidentifier that is used to programmatically group them? If not then whats the point of these as grouping and display is actually under the control of user.