Hello,
I'm implementing the wallet extension but I found a problem in the passEntries function. This following part is giving nil ando I don't know why
if let entry = PKIssuerProvisioningExtensionPaymentPassEntry( identifier: element.id, title: element.cardType ?? "Card", art: self.testImage()!, addRequestConfiguration: config! ) { entries.append(entry) }
I debug and all the arguments have information but it doesn't create the entry
Overview
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
No eligible devices connected to 'My Mac
I've created a new app on App Store Connect. Setup everything like all the forms, the build, users, internal testing group, and then sent the invitation emails for testing. Now users can see the app in the TestFlight but when they try to install it, they get the error below.
Could not install [APP].
The requested app is not available or doesn't exist.
I've sent an email to Apple support couple of days ago but still no response.
Saw some comments on the internet that you need to send your app for review and once it's approved you can use TestFlight. So I sent the app for review with a long description about how I'm not able to use TestFlight but still on wait.
Tried to create a public TestFlight link but I get this error: "Beta contract is missing for the app." but there's actually no contract anywhere.
What do I do? This is completely unacceptable. Why is the TestFlight not working? Why are the error messages not helpful?
Topic:
App Store Distribution & Marketing
SubTopic:
TestFlight
I have had an App (AngelNav) available on the App Store since 2023 which was written for iOS v15.0 or later.
I am working on a new version which has the same functionality, but a radically new interface as well as taking advantage of the latest features in SwiftUI. I am writing it from the bottom up for iOS26 to ensure a clean codebase to ease maintenance.
As I understand it I have the following options:
Issue an update to the existing app. This is easy to do but creates a problem for those users with iOS26 who prefer the old interface. In addition I can't see a way to implement bug fixes for previous versions
Create a new app (AngelNavNeo). This would allow users with iOS26 who prefer the old interface to stick with it, and I can issue bug fixes on the old version. However, there is no way to share already purchased in-app purchases between versions without a server-side solution and the need for user accounts on my server (neither of which I want to do).
Is my understanding is correct, and have I missed anything?
I'm submitting my first macOS app (a native
SwiftUI menu bar app, signed with Developer ID
Application certificate, Hardened Runtime
enabled) for notarization using xcrun
notarytool submit with keychain profile
authentication.
All 9 of my submissions have been stuck at "In
Progress" for up to 16 hours. None have
transitioned to "Accepted" or "Invalid." Logs
are unavailable for all of them (notarytool
log returns "Submission log is not yet
available").
Environment
macOS: 26.2 (25C56)
Xcode: 26.1.1 (17B100)
notarytool: 1.1.0 (39)
App: Native SwiftUI, universal binary
(x86_64 + arm64), ~2.2 MB DMG
Bundle ID: com.gro.ask
Team ID: 4KT56S2BX6
What I've verified
Code signing is valid:
$ codesign --verify --deep --strict GroAsk.app
passes with no errors
$ codesign -dvvv GroAsk.app
Authority=Developer ID Application: Jack Wu
(4KT56S2BX6)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
CodeDirectory flags=0x10000(runtime) #
Hardened Runtime enabled
Runtime Version=26.1.0
Format=app bundle with Mach-O universal
(x86_64 arm64)
Entitlements are minimal:
com.apple.security.app-sandbox
com.apple.security.network.client
Uploads succeed — each submission receives a
valid submission ID and the file uploads to
Apple's servers without error.
Submission history
Created (UTC): 04:40
ID: eeb12389-...
File: GroAsk-1.6.0.dmg
Status: Invalid (Hardened Runtime missing —
since fixed)
────────────────────────────────────────
Created (UTC): 04:42
ID: 6e537a32-...
File: GroAsk-1.6.0.dmg
Status: In Progress (16+ hrs)
────────────────────────────────────────
Created (UTC): 07:52
ID: 5ee41736-...
File: GroAsk-1.6.0.dmg
Status: In Progress
────────────────────────────────────────
Created (UTC): 08:19
ID: f5c6b9a5-...
File: GroAsk-1.6.0.dmg
Status: In Progress
────────────────────────────────────────
Created (UTC): 08:27
ID: 0f1c8333-...
File: GroAsk-1.6.0.dmg
Status: In Progress
────────────────────────────────────────
Created (UTC): 08:29
ID: 77fd9cd4-...
File: GroAsk-1.6.0.dmg
Status: In Progress
────────────────────────────────────────
Created (UTC): 08:51
ID: db9da93e-...
File: GroAsk-1.6.1.dmg
Status: In Progress
────────────────────────────────────────
Created (UTC): 09:05
ID: 3c43c09f-...
File: GroAsk.zip
Status: In Progress
────────────────────────────────────────
Created (UTC): 12:01
ID: b2267a74-...
File: GroAsk-1.6.3.dmg
Status: In Progress
────────────────────────────────────────
Created (UTC): 12:15
ID: ae41e45c-...
File: GroAsk.zip
Status: In Progress
The very first submission (eeb12389) came back
as Invalid within minutes because Hardened
Runtime wasn't enabled on the binary. I fixed
the build configuration and confirmed
flags=0x10000(runtime) is present on all
subsequent builds. However, every submission
after that fix has been stuck at "In Progress"
with no state transition.
What I've tried
Submitting both .dmg and .zip formats — same
result
Verified notarytool log — returns
"Submission log is not yet available" for all
stuck submissions
Apple Developer System Status page shows the
Notary Service as "Available"
I've also emailed Apple Developer Support
but have not received a response yet
Questions
Is this the expected behavior for a
first-time notarization account? I've seen
other threads mentioning that new accounts may
be held for "in-depth analysis," but 16+
hours with zero feedback seems excessive.
2. Is there any manual configuration Apple
needs to do on their end to unblock my team
for notarization?
3. Should I stop submitting and wait, or is
there something else I can try?
Any guidance from DTS would be greatly
appreciated. This is blocking the release of
my app.
I'm having issues accepting an invite to access TestFlight. I may have tried multiple attempts due to my existing email address not being accepted, so I had to create a new email that's not linked to Apple yet and put it in the activation form.
However, now I am getting an error, "Verification codes can't be sent to this phone number at this time. Please try again later." This has been an error since yesterday and the resend, verification via call, and text are all not working. I also tried a different phone number and same issue.
Can someone help on this, please.
Hello,
I am experiencing an issue where lighting is disabled within a Portal Component specifically when using Progressive or Full Immersion styles in visionOS 26.2.
[Steps to Reproduce]
Create a scene in Reality Composer Pro with custom lighting (Directional Light, IBL, etc.) and load it as an Entity.
Add a PortalComponent to this Entity.
Observe the Entity in an ImmersiveSpace under different Immersion Styles.
[Observed Behavior]
Mixed Immersion: Lighting works as expected.Progressive / Full Immersion: Lighting is disabled, causing the content to render incorrectly.
[Additional Context]
Without PortalComponent: The same Reality Composer Pro scene renders lighting correctly across all Immersion Styles (Mixed, Progressive, and Full).Regression: In applications built with Xcode 16.4 / visionOS 2.5, lighting inside the Portal functioned correctly. This issue appears to have emerged with Xcode 26.2 and visionOS 26.2.
[Questions]
Is the disabling of lighting inside Portals during Full/Progressive Immersion an intended architectural change or optimization in visionOS 26.2?
Are there any workarounds, such as specific PortalComponent configurations or new API flags, to re-enable lighting in these immersion modes?
Thank you.
Topic:
Spatial Computing
SubTopic:
Reality Composer Pro
Tags:
AR / VR
RealityKit
Reality Composer Pro
Some of our app's users are repeatedly running into a crash on NeutrinoCore -[NUIdentifier initWithNamespace:name:version:] + 2352. It looks from the stack trace like multiple threads are performing PHFetchRequests, but that shouldn't be causing a crash. It's isolated to a small number of users, which makes me think that it's something related to their specific Photos databases (e.g., data corruption.)
Do you have any suggestions how I might be able to resolve this?
2
libsystem_c.dylib
abort + 124
3
NeutrinoCore
-[NUAssertionPolicyCrashReport notifyAssertion:] + 66
4
NeutrinoCore
-[NUAssertionPolicyComposite notifyAssertion:] + 160
5
NeutrinoCore
-[NUAssertionPolicyUnique notifyAssertion:] + 176
6
NeutrinoCore
-[NUAssertionHandler handleFailureInFunction:file:lineNumber:currentlyExecutingJobName:description:arguments:] + 156
7
NeutrinoCore
_NUAssertFailHandler + 176
8
NeutrinoCore
-[NUIdentifier initWithNamespace:name:version:] + 2352
9
NeutrinoCore
-[NUIdentifier initWithName:version:] + 84
10
NeutrinoCore
-[NUIdentifier initWithName:] + 68
11
PhotoImaging
+[PISchema identifier] + 36
12
PhotoImaging
+[PISchema registeredPhotosSchemaIdentifier] + 32
13
PhotoImaging
+[PIPhotoEditHelper newComposition] + 28
14
PhotoImaging
+[PICompositionSerializer deserializeCompositionFromAdjustments:metadata:formatIdentifier:formatVersion:sidecarData:error:] + 160
15
PhotoImaging
+[PICompositionSerializer deserializeCompositionFromData:formatIdentifier:formatVersion:sidecarData:error:] + 224
16
PhotoLibraryServices
-[PLPhotoEditPersistenceManager loadCompositionFrom:formatIdentifier:formatVersion:sidecarData:error:] + 1848
17
PhotoLibraryServices
+[PLPhotoEditPersistenceManager validateAdjustmentData:formatIdentifier:formatVersion:error:] + 108
18
Photos
__167+[PHContentEditingInputRequestContext contentEditingInputRequestContextForAsset:requestID:managerID:networkAccessAllowed:downloadIntent:progressHandler:resultHandler:]_block_invoke + 260
19
Photos
-[PHAdjustmentData(ContentEditingInput) _contentEditing_readableByClientWithVerificationBlock:] + 136
20
Photos
-[PHAdjustmentData(ContentEditingInput) _contentEditing_requiredBaseVersionReadableByClient:verificationBlock:] + 88
21
Photos
-[PHContentEditingInputRequestContext _adjustmentBaseVersionFromResult:request:canHandleAdjustmentData:] + 356
22
Photos
-[PHContentEditingInputRequestContext produceChildRequestsForRequest:reportingIsLocallyAvailable:isDegraded:result:] + 624
23
Photos
-[PHMediaRequestContext _produceChildRequestsForRequest:withResult:] + 88
24
Photos
-[PHMediaRequestContext mediaRequest:didFinishWithResult:] + 92
25
Photos
-[PHAdjustmentDataRequest _finishFromAsynchronousCallback] + 124
26
Photos
__39-[PHAdjustmentDataRequest startRequest]_block_invoke + 584
27
PhotoLibraryServicesCore
__106-[PLAssetsdResourceClient adjustmentDataForAsset:networkAccessAllowed:trackCPLDownload:completionHandler:]block_invoke.84 + 880
28
CoreFoundation
invoking + 148
29
CoreFoundation
-[NSInvocation invoke] + 424
30
Foundation
<deduplicated_symbol> + 16
31
Foundation
-[NSXPCConnection _decodeAndInvokeReplyBlockWithEvent:sequence:replyInfo:] + 528
32
Foundation
__88-[NSXPCConnection _sendInvocation:orArguments:count:methodSignature:selector:withProxy:]_block_invoke_5 + 188
33
libxpc.dylib
_xpc_connection_reply_callout + 124
42
libsystem_pthread.dylib
start_wqthread + 8
iOS26系统使用系统键盘录音转文字会造成整个音频模块不能用,其他的app播放视频没有声音。复现概率非常高,请问有解决的办法么?
I've paid the amount and the amounts deducted from my account , and its been 5 days , but still my developer account is not verified , how to deal with this .
Topic:
Developer Tools & Services
SubTopic:
Apple Developer Program
When using the [AVAudioSession setCategory:withOptions:error:] API, the call hangs for a long time and eventually returns an error.This issue occurs on iOS 16, and did not appear in earlier versions.
Thread 135:
0 libsystem_kernel.dylib 0x00000002478e3cd4 _mach_msg2_trap :8 (in libsystem_kernel.dylib)
1 libsystem_kernel.dylib 0x00000002478e7214 _mach_msg_overwrite :428 (in libsystem_kernel.dylib)
2 libsystem_kernel.dylib 0x00000002478e705c _mach_msg :24 (in libsystem_kernel.dylib)
3 libdispatch.dylib 0x00000001d63ffe84 __dispatch_mach_send_and_wait_for_reply :548 (in libdispatch.dylib)
4 libdispatch.dylib 0x00000001d6400224 _dispatch_mach_send_with_result_and_wait_for_reply :60 (in libdispatch.dylib)
5 libxpc.dylib 0x00000001b2114e04 _xpc_connection_send_message_with_reply_sync :256 (in libxpc.dylib)
6 Foundation 0x000000019b6249f0 ___NSXPCCONNECTION_IS_WAITING_FOR_A_SYNCHRONOUS_REPLY__ :16 (in Foundation)
7 Foundation 0x000000019c06d1b4 -[NSXPCConnection _sendInvocation:orArguments:count:methodSignature:selector:withProxy:] :2100 (in Foundation)
8 CoreFoundation 0x000000019dfcb1cc ____forwarding___ :1072 (in CoreFoundation)
9 CoreFoundation 0x000000019dfd3200 ___forwarding_prep_0___ :96 (in CoreFoundation)
10 AudioSession 0x00000001c77498b0 __ZN4avas6client11SessionCore10HandlePingEv :192 (in AudioSession)
11 AudioSession 0x00000001c77497b0 ____ZN4avas6client11SessionCore12DispatchPingEv_block_invoke :52 (in AudioSession)
12 libdispatch.dylib 0x00000001d63e4adc __dispatch_call_block_and_release :32 (in libdispatch.dylib)
13 libdispatch.dylib 0x00000001d63fe7ec __dispatch_client_callout :16 (in libdispatch.dylib)
14 libdispatch.dylib 0x00000001d63ed468 __dispatch_lane_serial_drain :740 (in libdispatch.dylib)
15 libdispatch.dylib 0x00000001d63edf78 __dispatch_lane_invoke :440 (in libdispatch.dylib)
16 libdispatch.dylib 0x00000001d63f6f48 __dispatch_root_queue_drain :364 (in libdispatch.dylib)
17 libdispatch.dylib 0x00000001d63f6d08 __dispatch_worker_thread :268 (in libdispatch.dylib)
18 libsystem_pthread.dylib 0x00000001f9ff144c __pthread_start :136 (in libsystem_pthread.dylib)
19 libsystem_pthread.dylib 0x00000001f9fed8cc _thread_start :8 (in libsystem_pthread.dylib)
Thread 132:
0 libsystem_kernel.dylib 0x00000002478e3cd4 _mach_msg2_trap :8 (in libsystem_kernel.dylib)
1 libsystem_kernel.dylib 0x00000002478e7214 _mach_msg_overwrite :428 (in libsystem_kernel.dylib)
2 libsystem_kernel.dylib 0x00000002478e705c _mach_msg :24 (in libsystem_kernel.dylib)
3 libdispatch.dylib 0x00000001d63ffe84 __dispatch_mach_send_and_wait_for_reply :548 (in libdispatch.dylib)
4 libdispatch.dylib 0x00000001d6400224 _dispatch_mach_send_with_result_and_wait_for_reply :60 (in libdispatch.dylib)
5 libxpc.dylib 0x00000001b2114e04 _xpc_connection_send_message_with_reply_sync :256 (in libxpc.dylib)
6 Foundation 0x000000019b6249f0 ___NSXPCCONNECTION_IS_WAITING_FOR_A_SYNCHRONOUS_REPLY__ :16 (in Foundation)
7 Foundation 0x000000019c06d1b4 -[NSXPCConnection _sendInvocation:orArguments:count:methodSignature:selector:withProxy:] :2100 (in Foundation)
8 CoreFoundation 0x000000019dfcb1cc ____forwarding___ :1072 (in CoreFoundation)
9 CoreFoundation 0x000000019dfd3200 ___forwarding_prep_0___ :96 (in CoreFoundation)
10 AudioSession 0x00000001c7754198 __ZNK4avas6client11SessionCore18SetBatchPropertiesEP12NSDictionaryIP8NSStringPU25objcproto14NSSecureCoding11objc_objectEPU15__autoreleasingP7NSArrayIPS2_IS4_P8NSNumberEENS_30AVAudioSessionBatchSetStrategyEbb :548 (in AudioSession)
11 AudioSession 0x00000001c7753e58 __ZNK4avas6client11SessionCore20SetBatchPropertiesMXEP12NSDictionaryIP8NSStringPU25objcproto14NSSecureCoding11objc_objectE :92 (in AudioSession)
12 AudioSession 0x00000001c775179c __ZN4avas6client11SessionCore11setCategoryEP8NSStringS3_32AVAudioSessionRouteSharingPolicym :472 (in AudioSession)
13 AudioSession 0x00000001c7768f88 -[AVAudioSession setCategory:withOptions:error:] :68 (in AudioSession)
14 AlipayWallet 0x000000010140580c -[AVAudioSession(APMHook) apmhook_setCategory:withOptions:error:] APMHookAudioSession.m:35 (in AlipayWallet)
15 AlipayWallet 0x00000001014001a4 -[APMAudioSessionManager resume] APMAudioSessionManager.m:718 (in AlipayWallet)
16 libdispatch.dylib 0x00000001d63e4adc __dispatch_call_block_and_release :32 (in libdispatch.dylib)
17 libdispatch.dylib 0x00000001d63fe7ec __dispatch_client_callout :16 (in libdispatch.dylib)
18 libdispatch.dylib 0x00000001d63ed468 __dispatch_lane_serial_drain :740 (in libdispatch.dylib)
19 libdispatch.dylib 0x00000001d63edf44 __dispatch_lane_invoke :388 (in libdispatch.dylib)
20 libdispatch.dylib 0x00000001d63f83ec __dispatch_root_queue_drain_deferred_wlh :292 (in libdispatch.dylib)
21 libdispatch.dylib 0x00000001d63f7ce4 __dispatch_workloop_worker_thread :692 (in libdispatch.dylib)
22 libsystem_pthread.dylib 0x00000001f9fee3b8 __pthread_wqthread :292 (in libsystem_pthread.dylib)
23 libsystem_pthread.dylib 0x00000001f9fed8c0 _start_wqthread :8 (in libsystem_pthread.dylib)
I use EAS (Expo) to build a mobile app. When I build for iOS, I need to supply my Apple credentials so that Expo can generate the necessary build credentials and validate them. For the last two days, I can't get past this authentication step:
POST https://idmsa.apple.com/appleauth/auth/signin
⠦ Logging in...Error: Request failed with status code 503
I can't find anything online stating that this service is currently unavailable. Is there a problem? Any ETA on resolution?
Topic:
Developer Tools & Services
SubTopic:
Apple Developer Program
Hello everyone,
I am currently working on integrating a WebView into my macOS application, intended to allow users to browse tutorial webpages directly within the app.
Although I’ve followed an example that appears syntactically correct, the WebView does not render any webpage content.
Below is a code snippet for reference:
import SwiftUI
import WebKit
struct HelpWebView: View {
@State private var toggle = false
@State private var page = WebPage()
private var url: URL {
toggle
? URL(string: "https://www.webkit.org")!
: URL(string: "https://www.swift.org")!
}
var body: some View {
WebView(page)
.onAppear {
page.load(URLRequest(url: url))
}
.onChange(of: toggle) {
page.load(URLRequest(url: url))
}
.toolbar {
Button("Reload", systemImage: "arrow.clockwise") {
toggle.toggle()
}
}
}
}
I would greatly appreciate any insights or suggestions on what might be causing this issue or how to resolve it.
Thank you in advance for your help!
Environment
OS: iOS 26.2 (Beta/Release)
Framework: StoreKit 1 (or StoreKit 2)
Environment: TestFlight / Sandbox
Device: [Insert your device model, e.g., iPhone 15 Pro]
Description
I am encountering a persistent issue where SKPaymentQueue.default().finishTransaction(transaction) does not successfully remove the transaction from the queue.
Every time a new purchase is initiated, the observer triggers an immediate update with the previous transaction's ID (Transaction ID). The system then displays a system alert stating: "You've already purchased this In-App Purchase. It will be restored for free." Even after explicitly calling finishTransaction, the same transaction reappears in the updatedTransactions array upon the next app launch or purchase attempt.
Steps to Reproduce
Add a transaction observer in didFinishLaunchingWithOptions.
Initiate an In-App Purchase in TestFlight.
Upon success (.purchased), call SKPaymentQueue.default().finishTransaction(transaction).
Attempt to buy the same non-consumable item (or any item) again.
Result: The previous transaction is pushed again, and the queue never clears.
What I’ve Tried
Ensured finishTransaction is called on the main thread.
Verified that the observer is added at app launch.
Manually iterating through SKPaymentQueue.default().transactions and finishing all entries.
Signed out of the Sandbox account and used a completely new test account.
Deleted and reinstalled the App via TestFlight.
Topic:
App Store Distribution & Marketing
SubTopic:
App Store Connect
Tags:
App Store
App Store Connect
TestFlight
As GKGameCenterViewController has been deprecated, it seems that GKAccessPoint is now the correct way to present the GameCentre leaderboard.
But the placement options for the GKAccessPoint are very limited and lead to misaligned UI that looks clunky, as the GKAccessPoint does not align with the system navigation toolbar.
Am I missing something here or am I just stuck with a lopsided UI now?
I much preferred how this previously worked, where I could present the GKGameCenterViewController in a sheet from my own button
I'm trying to replicate edit/select mode of iOS 26 photos app. When user clicks Select button, bottom tab bar is replaced by the toolbar buttons. When I press Done button, a white opaque bar appears at the bottom behind the tabbar. It looks pretty straightforward to implement but I'm banging my head here now. Any help will be appreciated.
Code and animation frames attached bellow
struct ContentView: View {
var body: some View {
TabView(selection: $selectedTab) {
OverviewView()
.tabItem {
Image(systemName: "chart.pie")
Text("Overview")
}
.tag(0)
//rest of the tabs
}
}
}
struct OverviewView: View {
@State private var editActive = false
@State private var selection = Set<String>()
@State private var items = [
"Item 1",
"Item 2",
"Item 3",
]
var body: some View {
NavigationStack {
List(selection: $selection) {
ForEach(items, id: \.self) { item in
Text(item)
}
}
.toolbar {
if editActive {
ToolbarItem(placement: .bottomBar) {
Button {
} label: {
Label("Delete", systemImage: "trash")
}
}
ToolbarItem(placement: .bottomBar) {
Button {
} label: {
Label("Category", systemImage: "tag")
}
}
}
ToolbarItem(placement: .topBarTrailing) {
Button(editActive ? "Done" : "Select") {
withAnimation {
editActive.toggle()
}
}
}
}
.environment(\.editMode, .constant(editActive ? .active : .inactive))
.toolbar(editActive ? .hidden : .visible, for: .tabBar)
}
}
}
I have attached 5 frames during animation phase.
I’m seeking guidance on how to move an enrollment forward that has stalled. I submitted my application for the Apple Developer Program on Feb-2, and the 48-hour processing window has now passed.
have already reached out via the formal support channel but have not received a response beyond the automated acknowledgment. This delay is currently blocking the scheduled distribution of a macOS application and impacting our development timeline.
Hello,
We are using a Message Filter Extension (ILMessageFilterExtension) to classify SMS/iMessage content (junk vs allow) in our app. After testing on iOS 26.1, we want to confirm whether there are any behavioral, performance, or API-level changes that impact message filtering, such as: Changes in how often the filter extension is invoked Differences in classification accuracy or system overrides New privacy, entitlement, or permission-related restrictions Execution time limits or memory constraints Any changes specific to iMessage vs SMS filtering We did not find any explicit mention of Message Filter Extensions in the iOS 26.1 release notes and would like to confirm whether the existing behavior from previous iOS versions remains unchanged. Has Apple introduced any known or undocumented changes in iOS 26.1 that developers should be aware of when supporting Message Filter Extensions? Sometime I also found unpredictable behaviour on iOS version 18.5 or below, like sometime it works but sometimes starts working. Thanks in advance for any guidance.
I have a desktop application that shows some real estate properties chosen by the user. The application shows those GPP locations on the map. The SwiftUI code is something like the following.
import SwiftUI
import MapKit
struct ContentView: View {
var body: some View
ZStack {
mapView
}
}
private var mapView: some View {
Map(position: $propertyViewModel.mapPosition) {
ForEach(propertyViewModel.properties) { property in
Annotation("", coordinate: CLLocationCoordinate2D(latitude: property.lat, longitude: property.lon)) {
Button {
} label: {
VStack {
Image(systemName: "house.circle.fill")
.resizable()
.scaledToFit()
.frame(width: 48)
.foregroundStyle(colorScheme == .light ? .white : .black)
...
}
}
.buttonStyle(.borderless)
}
}
UserAnnotation()
}
.mapControls {
MapUserLocationButton()
}
.mapControlVisibility(.visible)
.onAppear {
CLLocationManager().requestWhenInUseAuthorization()
}
}
}
The application only wants to use the CLLocationManager class so that it can show those locations on the map relative to your current GPS position. And I'm hit with two review rejections.
Guideline 5.1.1 - Legal - Privacy - Data Collection and Storage
Issue Description
One or more purpose strings in the app do not sufficiently explain the use of protected resources. Purpose strings must clearly and completely describe the app's use of data and, in most cases, provide an example of how the data will be used.
Guideline 5.1.5 - Legal - Privacy - Location Services
The app uses location data for features that are not relevant to a user's location.
Specifically, the app is not functional when Location Services are disabled.
So I wonder if the application is even required to have 'NSLocationWhenInUseUsageDescription' and/or 'NSLocationUsageDescription'? just in order to show user's current location so that they can see property locations relative to it? The exact location privacy statement is the following.
The application needs your permission in accessing your current location so that it will appear on the map
Topic:
App & System Services
SubTopic:
Maps & Location
Tags:
MapKit
Privacy
SwiftUI
Maps and Location
We are having an issue with the Local Network permission pop-up not getting triggered for our apps that need to communicate with devices via local network interfaces/addresses.
As we understand, apps using UDP should trigger this, causing macOS to prompt for access, or, if denied, fail to connect. However, we are facing issues with macOS not prompting this popup at all.
Here are important and related points:
Our application is packaged as a .app package and distributed independently (not on the App Store).
The application controls hardware that we manufacture. In order to find the hardware on the network, we send a UDP broadcast with a message for our hardware on the local network, and the hardware responds with a message back.
However, the popup (to ask for permission) never shows up. The application is not able to find the hardware device. It is interesting to note that data is still sent out to the network (without the popup) but we receive back the wrong data.
The behaviour is consistent macOS Sequoia (and above) with both Apple And Intel silicon.
Workarounds that have been tried:
Manual Authorization: One solution suggested in various blogs was to go to "Settings → Privacy and Security-> Local network", find your application and grant access. However, the application never shows up in the list here.
Firewall: No difference is seen in behaviour with firewall being ON OR OFF.
Setting NSLocalNetworkUsageDescription: We have also tried setting the Info.plist adding the NSLocalNetworkUsageDescription with a meaningful string and updating the NSBonjourServices.
Running Via terminal (WORKS): Running the application via terminal sees no issues. The application runs correctly and is able to send UDP and receive correct data (and find the devices on the network). But this is not an appropriate solution.
How can we get this bug/issue fixed in macOS Sequoia (and above)?
Are there any other solutions/workarounds that we can try on our end?