Hello Developers,
I have ran into a problem while sending mail to apple private relay email. We have built a mobile application where user can sign up through apple and they can sign up using hide-my-email feature. Which provides private relay address for us. Now we want to communicate with them using private relay mail address. The technology we are using to send emails are amazon SES, have done SPF, DMIK, DMARC and added domains in apple identity services for mail communication, passed an SPF check as well. But still mail is not getting delivered
what am i doing wrong or apple doesn't support third party apps for sending emails to private relay? Is there any other way to achieve this please let me know
Using the same body as attached in image is working fine for rest emails.
Overview
Post
Replies
Boosts
Views
Activity
I was able to obtain the depth map image using AVCapturePhotoOutput from the delegate method
func photoOutput(_ output: AVCapturePhotoOutput, didFinishProcessingPhoto photo: AVCapturePhoto, error: (any Error)?)
I convert the depth map to kCVPixelFormatType_DepthFloat32 format and get the pixel values of the depth map using the below code
func convertDepthData(depthMap: CVPixelBuffer) -> [[Float32]] {
let width = CVPixelBufferGetWidth(depthMap)
let height = CVPixelBufferGetHeight(depthMap)
var convertedDepthMap: [[Float32]] = Array(
repeating: Array(repeating: 0, count: width),
count: height
)
CVPixelBufferLockBaseAddress(depthMap, CVPixelBufferLockFlags(rawValue: 2))
let floatBuffer = unsafeBitCast(
CVPixelBufferGetBaseAddress(depthMap),
to: UnsafeMutablePointer<Float32>.self
)
for row in 0 ..< height {
for col in 0 ..< width {
if floatBuffer[width * row + col].isFinite{
convertedDepthMap[row][col] = floatBuffer[width * row + col]
}
}
}
CVPixelBufferUnlockBaseAddress(depthMap, CVPixelBufferLockFlags(rawValue: 2))
return convertedDepthMap
}
Is this the right way of accessing the depth float values from a depth map. And what will be the unit for it. Because some times the depth values are in range of 0.7 when I keep the device close to the subject around 15 to 30 cm.
My Apple Watch after the beta update is not syncing the activities sometimes with Apple Health.
I just completed a 2.5 km walk, and it showed on Apple Health, yes, but it did not affect my daily goals. This is not the first time this has happened; this is just one of the examples that I'm sharing, other than what has been some problems that I am seeing after the beta update.
Additionally, the camera remote app is not working correctly as I cannot see anything on the watch screen like I used to.
Hi everyone,
I've implemented geofencing in my app, and it works well when the device is connected to the internet. The app successfully triggers region entry and exit events, even when it's in a terminated state, and sends the details to the server.
However, I'm facing an issue with offline functionality. I attempted to cache geofence events (region entry/exit) when the device is offline and send them to the server once the device comes back online. I’ve tried using both UserDefaults and Core Data for caching these events, but the offline events are not being stored or processed correctly.
Here’s the code that triggers the region events:
func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) {
if let region = region as? CLCircularRegion {
handleRegionEvent(region: region, eventType: "enter")
}
}
func locationManager(_ manager: CLLocationManager, didExitRegion region: CLRegion) {
if let region = region as? CLCircularRegion {
handleRegionEvent(region: region, eventType: "exit")
}
}
The region entry/exit triggers correctly, and I even receive notifications. However, nothing is being saved to storage.
To cache events, I'm using this method:
private func cacheEvent(_ event: GeofenceEvent) {
var cachedEvents = getCachedEvents()
cachedEvents.append(event)
if let encoded = try? JSONEncoder().encode(cachedEvents) {
UserDefaults.standard.set(encoded, forKey: cachedEventsKey)
}
}
For UserDefaults, we've added the app group and suite name, but it's still not working as expected.
Has anyone encountered similar issues or have any suggestions on how to reliably cache and sync geofence events during offline scenarios?
Any help would be greatly appreciated!
Hi,
I have configured the stream as interleaved, but I am unsure if the function produces interleaved samples. So here my question:
Does AudioDeviceCreateIOProcID produce interleaved samples with microphone input?
We are reaching out to discuss an issue we have encountered with our app's activation process while running in the background. Currently, we are employing an iBeacon-based activation scheme, but we have noticed that after the app is activated, it is unable to receive UUID data from the scan-response while in the background.
We are considering the possibility of embedding the UUID data into the advertisement so that the app can receive it once activated by the iBeacon. Additionally, we are preparing to use both Core Bluetooth’s “Performing Long-Term Actions in the Background” feature and the iBeacon scheme simultaneously for app activation. We would like to know if these two methods can coexist without any mutual interference.
Currently, we are utilizing a method of updating the beacon advertisement after connection and disconnection to enhance the app's activation capability. However, in some scenarios where the signal is weak, the app does not detect the vehicle after being activated and will not be reactivated by the same beacon after going into sleep mode. Our current approach is to update the beacon advertisement every 10 seconds to improve this capability.
We have outlined our proposed changes and would appreciate your confirmation on whether they could lead to better optimization:
1.Embedding the UUID from the scan-response into the advertisement.
2.Updating the iBeacon advertisement content every 10 seconds.
3. Simultaneously using Core Bluetooth's "Performing Long-Term Actions in the Background" feature along with the iBeacon scheme for app activation.
Additionally, we would like to know if these changes could potentially cause any other issues.
Thank you for your assistance, and I look forward to your insights on this matter.
So recently I have been trying to install game-porting-toolkit, and when I try to run
brew -v install apple/apple/game-porting-toolkit
Im getting an error:
Error: apple/apple/game-porting-toolkit 1.1 did not build
Logs:
/Users/mateusz/Library/Logs/Homebrew/game-porting-toolkit/00.options.out
/Users/mateusz/Library/Logs/Homebrew/game-porting-toolkit/01.configure
/Users/mateusz/Library/Logs/Homebrew/game-porting-toolkit/01.configure.cc
/Users/mateusz/Library/Logs/Homebrew/game-porting-toolkit/wine64-build
If reporting this issue please do so to (not Homebrew/brew or Homebrew/homebrew-core):
apple/apple
I searched on this forum some threads but I couldn't take any advice from them. I would really appreciate any help.
Creating profile via a post request keeps getting a server error 500.
It just worked yestday.
POST https://api.appstoreconnect.apple.com/v1/profiles
{
"code": "UNEXPECTED_ERROR",
"detail": "An unexpected error occurred on the server side. If this issue continues, contact us at https://developer.apple.com/contact/.",
"status": "500",
"title": "An unexpected error occurred."
}
Hi, I have been notarizing my code for several years with the same procedure, but today I have the following message :
Conducting pre-submission checks for FencingFox.zip and initiating connection to the Apple notary service...
Error: HTTP status code: 401. Invalid credentials. Username or password is incorrect. Use the app-specific password generated at appleid.apple.com. Ensure that all authentication arguments are correct.
CloudKit query for FencingFox.pkg (1/00a276f170785e1dcbfbd6873a00b9309672338b) failed due to "Record not found".
Could not find base64 encoded ticket in response for 1/00a276f170785e1dcbfbd6873a00b9309672338b
The staple and validate action failed! Error 65.
I have changed my apple password and migrated to Sequoia.
How should I investigate the issue ?
Iphone 16 pro
After set video.src, video.play() not work
<div>
<button id="play">
play
</button>
</div>
<video
id="video"
preload="auto"
playsInline
webkit-playsinline="true"
x5-video-player-type="h5"
x5-video-player-fullscreen="true"
x5-video-orientation="portraint"
x-webkit-airplay="true"
raw-controls="true"
style="width: 300px;"
>
<source src="****.mp4" type="video/mp4" />
<track kind="captions" srcLang="en" />
</video>
<script>
document.querySelector('#play').addEventListener('click', function() {
document.querySelector('#video').play();
})
document.querySelector('#video').addEventListener('ended', function() {
document.querySelector('#video').pause();
document.querySelector('#video').src = '*****.mp4';
document.querySelector('#video').play()
})
</script>
I've been trying very unsuccessfully to get the Filtering Network Traffic example code to work. I've read many forum posts but I still wasn't able to figure it out.
I download the example project and set my development team for both targets. From then on the project is configured to create unique bundle identifiers and app group. Signing and provisioning profile is created and managed by Xcode with all the necessary entitlements. I am able to build the app (debug with provisioning profile) and then copy it to /Applications.
I open the app, click start, enable and allow the network extension. Activity Monitor shows that the extension is running.
But when I test local connections to port 8888 nothing happens in the app, the connection are just allowed. I tested with the following setup:
create a local webserver with python3 -m http.server 8888 and make a request via curl and the webbrowser
normal tcp connection with nc (nc -l 8888 and nc localhost 8888)
I added lots of logging and I can see that the startFilter method is called, but never the handleNewFlow method.
The only error I see in Console is
networkd_settings_read_from_file Sandbox is preventing this process from reading networkd settings file at "/Library/Preferences/com.apple.networkd.plist", please add an exception.
but don't know what to do about that. I also read the debugging guide (very helpful).
I'm used to jump through a lot of hoops with this stuff, but I can't figure out what the problem is.
Hi,
I'm facing an issue with Darwin notifications between two applications that share the same App Group.
Issue Description:
When the app is in the foreground (active state), the notifications are received and handled correctly.
However, when the app is in the background, notifications are not received.
What I've Tried:
Verified the App Group is correctly configured and accessible between the two applications.
Confirmed Darwin notifications are triggered and received successfully in the foreground.
Checked notification permissions and ensured all required capabilities are enabled.
Setup Details:
iOS version: iOS 11
Xcode version: 16.0
Notifications: Darwin notifications sent between apps using App Groups.
**Code Snippet : **
func startListening(name: String, callback: @escaping () -> Void) {
CFNotificationCenterAddObserver(notificationCenter,
Unmanaged.passUnretained(self).toOpaque(),
NotificationManager.notificationCallback,
name as CFString,
nil,
.deliverImmediately)
}
func sendNotification(name: String) {
CFNotificationCenterPostNotification(notificationCenter, CFNotificationName(name as CFString), nil, nil, true)
}
private static let notificationCallback: CFNotificationCallback = { center, observer, name, _, _ in
guard let observer = observer else { return }
let manager = Unmanaged.fromOpaque(observer).takeUnretainedValue()
if let name = name?.rawValue as String {
// Code added
}
}
Is there any additional configuration or specific behavior of Darwin notifications in the background that could be causing this issue?
I would greatly appreciate any insights, guidance, or references to relevant documentation.
Thank you!
I have setup a sandbox user and I'm unable to reset the purchase history - neither by using the functionality in AppStoreConnect nor in the settings of the AppStore-App on the respective devices. Even logout of the sandbox-user in the AppStoreApp and login again didn't help. How can this be fixed? Thanks for your support.
I'm encountering a browser-specific issue with a React infinite scroll animation component. The animation works perfectly in Chrome on MacBook, but breaks specifically in Safari:
✅ Chrome on MacBook: Works perfectly
❌ Safari on MacBook: Animation and layout issues
Technical Details
Environment
Browser: Safari: Version 18.1.1 (20619.2.8.11.12)
MacBook 13-inch display
React 18
GSAP for animations
TailwindCSS for styling
Next.js/TypeScript project
Implementation
const MovingGrid: React.FC = () => {
useEffect(() => {
const initAnimation = () => {
const container = containerRef.current;
if (container) {
gsap.to(container, {
x: `-${firstSet.clientWidth}`,
duration: 30,
ease: "none",
repeat: -1,
onRepeat: () => {
gsap.set(container, { x: 0 });
}
});
}
};
}, []);
return (
<div className="hidden lg:block overflow-hidden w-full relative">
<div ref={containerRef} className="flex absolute -bottom-[100px]">
{/* Grid content */}
</div>
</div>
);
};
Safari-Specific Behavior
Images overflow the container in Safari only
Layout gets disrupted when animation resets
Same code works perfectly in Chrome on the same machine
Cross-Browser Testing Results
Safari on MacBook: Issues with animation and layout
Chrome on MacBook: Works as expected
Firefox on MacBook: Works as expected
Safari on iOS: Needs testing
Chrome on Windows: Works as expected
Attempted Solutions
Safari-specific CSS fixes:
/* Attempted Safari-specific fixes */
@supports (-webkit-hyphens:none) {
.moving-grid {
transform: translateZ(0);
-webkit-transform: translateZ(0);
backface-visibility: hidden;
-webkit-backface-visibility: hidden;
}
}
Modified GSAP configuration for Safari:
gsap.config({
force3D: true
});
Tried various CSS transform and positioning approaches:
className="transform will-change-transform"
style={{ WebkitTransform: 'translate3d(0,0,0)' }}
Questions
Are there known Safari-specific issues with GSAP animations that require special handling?
Does Safari handle infinite scroll animations differently from Chrome in terms of performance or rendering?
Are there recommended Safari-specific optimizations for smooth animations?
Should we implement a different animation approach specifically for Safari users?
Investigation Notes
Performance metrics show no significant issues
Animation frame rate is consistent
Layout calculations appear correct before animation starts
Impact
This issue affects a crucial part of our property showcase website, specifically impacting Safari users on MacBook devices. Given Safari's significant user base on MacBooks, this needs to be resolved for a consistent cross-browser experience.
Additional Context
The animation is part of a larger property showcase feature
Performance is crucial for user experience
Need to maintain visual consistency across browsers
Reproduction Steps
Open website Safari on MacBook [pinkdoorbnb .com]
Observe the infinite scroll animation
Compare with Chrome on the same device
Note the differences in animation behaviour and layout
I would greatly appreciate any insights into Safari-specific animation handling or alternative approaches that work consistently across browsers.
Here is sample
Google Chrome ⬇
Safari ⬇
We have modified the program as we received in the previous(thread 764479) issue.
Our program works very well and the notification problem has been almost solved in the test.
Then, we tested it in the user's environment.
At that time, one of the three iPhones stopped receiving notifications.
After 10 minutes, VoIP notifications were received again.
This device received PUSH notifications even when VoIP notifications did not come.
We must explain to the user why this incident occurred.
We would like to know if these three notifications were sent correctly to the device.
Also, is there any other way for us to deal with this other than improving the network?
[APNS LIST]Nov. 20th
could not receive(failed)
15:06:13 5793987C-D1A4-811F-917F-87DD7F5083B3
15:07:09 667E0A2F-43B5-37FC-2F2A-45A6C27EFC34
15:19:31 1353DF78-519E-B1DC-82B7-8B890E59FE37
received(success)
15:04:09 19CC1937-533A-9AF4-9472-41C839E461D7
15:35:00 CD23AC57-6EC7-4523-941F-B103EDB4DEFB
When we upload workout data to HealthKit the route information with the workout detailed data is incomplete: just a few dots.
When we select "Show all workout routes" the route data for the same workout shows correctly.
We use the HKWorkoutBuilder to store the workout data, and add the location data with the HKWorkoutRouteBuilder to the workout with
Is this an Apple Health issue, or do we have to change something in the way we store the location data to the workout?
I have an app whose logic is in C++ and rest of the parts (UI) are in Swift and SwiftUI.
When an exception is raised by some C++ code, I'm using the Linux signal handler mechanism to trap it. From my previous post, I understand that fatal exceptions like SIGSEGV, SIGBUS, SIGFPE etc., there's nothing much that can be done by the process. My only intent for using a signal handler is to log something, so that it becomes easy to fix during development. Ofc, even that logging can fail, based on the severity of the exception, but that's okay... make an attempt to log - if it works, great, else the process can terminate.
I'm registering for SIGSEGV and SIGFPE with the following code
// ExceptionHandlingCpp.hpp file
struct tSignals {
SignalHandlerFunc signalHandlerFunc;
uint32_t signal;
[[maybe_unused]]
uint8_t reserved[4];
};
// ExceptionHandlingCpp.cpp file
tSignals ExceptionHandlingCpp::unixSignals[] = {
{HandleSignals, SIGFPE, {0}},
{HandleSignals, SIGSEGV, {0}},
{HandleSignals, SIGKILL, {0}},
};
std::string ExceptionHandlingCpp::signalToString(int signal) {
switch(signal) {
case SIGFPE:
return "SIGFPE";
case SIGSEGV:
return "SIGSEGV";
case SIGKILL:
return "SIGKILL";
default:
return "Unknown signal";
}
}
void ExceptionHandlingCpp::RegisterSignals() {
LOG("ExceptionHandlingCpp::RegisterSignals()");
struct sigaction sa;
sa.sa_flags = SA_SIGINFO;
for(int i = 0; i < sizeof(unixSignals)/sizeof(tSignals); ++i) {
sa.sa_sigaction = unixSignals[i].signalHandlerFunc;
if(sigaction(unixSignals[i].signal, &sa, nullptr) == 1) {
LOG("Failed to set " + signalToString(unixSignals[i].signal) + "'s signal handler!");
} else {
LOG(signalToString(unixSignals[i].signal) + "'s signal handler set sucessfully!");
}
}
}
In my signal handler (HandleSignals method), immediately after trapping a signal, I log something and set the default handler... This breaks out of the loop that occurs when returning from the signal handler.
// ExceptionHandlingCpp.cpp
void ExceptionHandlingCpp::HandleSignals(int pSignal, siginfo_t *pInfo, void *pContext) {
LOG("ExceptionHandlingCpp::HandleSignals(int, signinfo_t*, void*)");
LOG("signal = " + signalToString(pSignal));
UnregisterSignals(pSignal);
LOG("Returning from exception handler...");
}
void ExceptionHandlingCpp::UnregisterSignals(int pSignal) {
LOG("UnregisterSignals(int)");
struct sigaction defaultAction {};
defaultAction.sa_handler = SIG_DFL;
if(sigaction(pSignal, &defaultAction, nullptr) == -1) {
LOG("Error in resetting action for " + signalToString(pSignal));
} else {
LOG("Successfully reset " + signalToString(pSignal) + "'s action to default!");
}
}
When I test this code by raising SIGSEGV (as shown below),
void ExceptionHandlingCpp::DereferenceNullPtr ()
{
LOG("DereferenceNullPtr()");
int* ptr = nullptr;
LOG("Raising exception...");
int value = *ptr;
}
everything works as expected. Signal handler is invoked, default handler is set and the process immediately quits. But when I try to raise a SIGFPE,
void* ExceptionHandlingCpp::DivisionByZero ([[maybe_unused]] void* pParms)
{
LOG("DivisionByZero()");
int num1;
int num2;
int result;
num1 = 5;
num2 = 0;
LOG("Raising exception...");
result = num1 / num2;
LOG("Returning from DivisionByZero() method");
return nullptr;
}
my signal handler is not invoked (as shown in the logs below). The process doesn't terminate either. It seems that the flow simply 'walks over' this division by zero instruction as if nothing happened and returns from that method, which shouldn't have happened, as the process should've terminated after reaching my signal handler.
RegisterSignals()
SIGFPE's signal handler set sucessfully!
SIGSEGV's signal handler set sucessfully!
SIGKILL's signal handler set sucessfully!
....
DivisionByZero()
Raising exception...
Returning from DivisionByZero() method
....
AppDelegate.applicationWillBecomeActive(_:)
AppDelegate.applicationDidBecomeActive(_:)
...
// UI is displayed
Why is SIGFPE not raised? What am I missing here?
The app or its metadata appears to contain potentially misleading content. Specifically, the app includes content that resembles AlphaCargo without the necessary authorizatin.
I have already posted asking about this:
[quote='768005021, CynthiaSun, /thread/768005, /profile/CynthiaSun']
Codesigned and notarized app cannot directly write files inside the app bundle...
[/quote]
But there are still some doubts that have not been answered.
We use Qt to develop an application on the macOS platform, and we are attempting to perform code signing and notarization to ensure our the application is trusted by Apple.
However, there are a few things that seem weird regarding this statement:
"App bundles are read-only by design."
Let me provide more details.
Currently, when our application starts, it needs to create folder (e.g. Temp) in the root directory of the executable
For example: Myapp.app/Contents/MacOS/Myapp ---> Myapp.app/Contents/MacOS/Temp
The folder is designed for storing runtime logs or config files for our application. In the past, users may also modify the settings inside target folder if needed.
However, the strange thing is that after the application is codesigned and notarized.
When we double-click the application Myapp (a.k.a Myapp.app) in Finder, it could successfully launch and create the Temp folder inside the Myapp.app/Contents/MacOS folder.
However, when we navigate and attempt to run the main application executable in command line mode (as our application supports this command line execution)
$ cd Myapp.app/Contents/MacOS
$ ./Myapp -h
As our application will check if the root folder has write permission before starting (i.e., check if Myapp.app/Contents/MacOS is writable because we require to create Temp folder in the following steps)
It pop up the error that folder does not have write permission.
The aforementioned scenarios seems to conflict with this statement: "App bundles are read-only by design" (because when the application is launched directly by clicking in Finder, the Temp folder can be created successfully, but via the console command line, it cannot).
I would like to confirm again if writing files in the notarized application MacOS directory is not allowed?
If not, have any recommended approaches? (e.g., changing the folder to another directory). What causes the different results in these running scenarios?
We are not concerned about breaking the signature after application launched, as it seems that macOS will add it to system trust list after first time successfully launch. (Download the app from internet --> System: it is an app downloaded from the internet. Are you sure want to open it...? OK --> Although our application creates the Temp folder after first launch, when we click the application second time, it could directly open the app)
I am trying to get my head around how to implement a MapKit view using UIViewRepresentable (I want the map to rotate to align with heading, which Map() can't handle yet to my knowledge). I am also playing with making my LocationManager an Actor and setting up a listener. But when combined with UIViewRepresentable this seems to create a rather convoluted data flow since the @State var of the vm needs to then be passed and bound in the UIViewRepresentable. And the listener having this for await location in await lm.$lastLocation.values seems at least like a code smell. That double await just feels wrong. But I am also new to Swift so perhaps what I have here actually is a good approach?
struct MapScreen: View {
@State private var vm = ViewModel()
var body: some View {
VStack {
MapView(vm: $vm)
}
.task {
vm.startWalk()
}
}
}
extension MapScreen {
@Observable
final class ViewModel {
private var lm = LocationManager()
private var listenerTask: Task<Void, Never>?
var course: Double = 0.0
var location: CLLocation?
func startWalk() {
Task {
await lm.startLocationUpdates()
}
listenerTask = Task {
for await location in await lm.$lastLocation.values {
await MainActor.run {
if let location {
withAnimation {
self.location = location
self.course = location.course
}
}
}
}
}
Logger.map.info("started Walk")
}
}
struct MapView: UIViewRepresentable {
@Binding var vm: ViewModel
func makeCoordinator() -> Coordinator {
Coordinator(parent: self)
}
func makeUIView(context: Context) -> MKMapView {
let view = MKMapView()
view.delegate = context.coordinator
view.preferredConfiguration = MKHybridMapConfiguration()
return view
}
func updateUIView(_ view: MKMapView, context: Context) {
context.coordinator.parent = self
if let coordinate = vm.location?.coordinate {
if view.centerCoordinate != coordinate {
view.centerCoordinate = coordinate
}
}
}
}
class Coordinator: NSObject, MKMapViewDelegate {
var parent: MapView
init(parent: MapView) {
self.parent = parent
}
}
}
actor LocationManager{
private let clManager = CLLocationManager()
private(set) var isAuthorized: Bool = false
private var backgroundActivity: CLBackgroundActivitySession?
private var updateTask: Task<Void, Never>?
@Published var lastLocation: CLLocation?
func startLocationUpdates() {
updateTask = Task {
do {
backgroundActivity = CLBackgroundActivitySession()
let updates = CLLocationUpdate.liveUpdates()
for try await update in updates {
if let location = update.location {
lastLocation = location
}
}
} catch {
Logger.location.error("\(error.localizedDescription)")
}
}
}
func stopLocationUpdates() {
updateTask?.cancel()
updateTask = nil
}
func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) {
switch clManager.authorizationStatus {
case .authorizedAlways, .authorizedWhenInUse:
isAuthorized = true
// clManager.requestLocation() // ??
case .notDetermined:
isAuthorized = false
clManager.requestWhenInUseAuthorization()
case .denied:
isAuthorized = false
Logger.location.error("Access Denied")
case .restricted:
Logger.location.error("Access Restricted")
@unknown default:
let statusString = clManager.authorizationStatus.rawValue
Logger.location.warning("Unknown Access status not handled: \(statusString)")
}
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
Logger.location.error("\(error.localizedDescription)")
}
}