The Certification Authority (CA) for Apple Push Notification service (APNs) is changing. APNs will update the server certificates in sandbox on January 20, 2025, and in production on February 24, 2025. All developers using APNs will need to update their application’s Trust Store to include the new server certificate: SHA-2 Root : USERTrust RSA Certification Authority certificate.
To ensure a smooth transition and avoid push notification delivery failures, please make sure that both old and new server certificates are included in the Trust Store before the cut-off date for each of your application servers that connect to sandbox and production.
At this time, you don’t need to update the APNs SSL provider certificates issued to you by Apple.
Delve into the world of built-in app and system services available to developers. Discuss leveraging these services to enhance your app's functionality and user experience.
Post
Replies
Boosts
Views
Activity
My Brand new iphone 16 pro max keeps restarting on its own for no reasonable
Hi,
REQUEST 1:
seems Microsoft is ahead of Apple in X86 ARM emulation support at least in features supported..
see:
https://blogs.windows.com/windows-insider/2024/11/06/announcing-windows-11-insider-preview-build-27744-canary-channel/
x64 emulated applications through Prism will now have support for additional extensions to the x86 instruction set architecture. These extensions include AVX and AVX2, as well as BMI, FMA, F16C
BMI1/2 and F16C aren't yet supported by Rosetta.. would be useful for games like Alan Wake 2..
so asking for Rosetta equaling features to Prism emulator..
REQUEST 2:
there is no way to currently enable AVX1/2 on Rosetta Linux..
on macOS using
export ROSETTA_ADVERTISE_AVX=1
does the trick.. but not on Linux VM's.. tested setting this via:
/bin/launchctl setenv ROSETTA_ADVERTISE_AVX 1
on Mac before VM launch and inside Linux VM but AVX2 isn't exposed..
In IOS 18.2 Beta 3 and earlier versions unfortunately it is not possible, to make shortcut use a variable to add a tag to a note.
Whenever this is running it opens up the list of tags and asks for manual input instead of using the variable that is placed in the textfield of the apply tag command.
Would be great if someone responsible could adjust that so it works.
Thxs :-)
Earlier this year implemented saving event tickets to Apple Wallet (and Google Wallet, which was painful by comparison!), as an optional alternative to recipients leaving the QR Codes in email or printing them.
Scanning barcodes on entry is done using camera on phones (either iPhone or Android). This is a somewhat pressured situation with lots of people needing scans in quite a short period of time. I do not do this myself but I do get feedback.
it was reported to me that Apple Wallet barcodes are significantly harder to scan accurately than those in Google Wallet. They think that is because the Apple QR Codes are quite a bit smaller (and presumably harder, therefore, to get focussed properly). They do work, it just takes longer to get a successful scan. This doesn’t seem to be anything I can control, and there seems to be plenty of space to make them bigger, even on my iPhone mini. These aren’t terribly dense barcodes; I imagine they would be harder still if they were. I also guess specialised barcode readers might do better, but we don’t have that luxury.
I’d appreciate it if they could be bigger when displayed in Apple Wallet, or at least to have that as an option.
I have a app with two targets: a main DeviceActivityApp target and a DeviceReport target. In the DeviceReport target, I have a TotalActivityReport struct conforming to DeviceActivityReportScene. Inside its makeConfiguration method, I update a dynamically generated list of AppReport items. The list updates correctly in the DeviceReport target.
// Define which context your scene will represent.
let context: DeviceActivityReport.Context = .totalActivity
// Define the custom configuration and the resulting view for this report.
let content: (MonitorDeviceReport) -> TotalActivityViewFirst
@ObservedObject var activityData:ActivityData
func makeConfiguration(representing data: DeviceActivityResults<DeviceActivityData>) async -> MonitorDeviceReport {
// Reformat the data into a configuration that can be used to create
// the report's view.
var appList:[AppsReport]=[]
let totalActivityDuration = await data.flatMap { $0.activitySegments }.reduce(0, {
$0 + $1.totalActivityDuration
})
for await _data in data{
for await activity in _data.activitySegments{
for await category in activity.categories{
for await app in category.applications{
let name=app.application.localizedDisplayName ?? "No Name"
let bundleId=app.application.bundleIdentifier ?? "nil"
let duration=app.totalActivityDuration
let appIcon=app.application.token
let app=AppsReport(id:bundleId,duration:duration, name:name, icon:appIcon)
appList.append(app)
}
}
}
}
DispatchQueue.main.async {
activityData.list=appList
}
return MonitorDeviceReport(duration:totalActivityDuration, apps:appList)
}
}
public class ActivityData:ObservableObject{
@Published var list:[AppsReport]=[]
public static let shared = ActivityData()
}. // This is in MonitorReport target
However, I need to access this dynamic list in my MyApp target, specifically in ContentView.swift. I tried using an ObservableObject (ActivityData) to share the data between targets, but the list always appears empty in the MyApp target.
Here’s what I’ve tried so far:
Created a shared ActivityData instance using @Published
Passed the ActivityData instance to TotalActivityReport
Used dependency injection and a singleton pattern for ActivityData
Verified that makeConfiguration updates the list correctly in DeviceReport
What could I be missing? How can I correctly share and access this data across targets?
Hello,
I have a problem loading data from UserDefaults. The group is set. When I test the software on an iOS phone/emulator, everything is OK. When I test the software on a Mac, it is:
The main program can write and read data.
The widget cannot read the data :(
I can't unlock my extern device. I have the followed crah report as I try to enter my password. The device was once used on a microsoft computer, idk if it's linked somehow. Does anyone know what to do ?
Translated Report (Full Report Below)
Process: WD Drive Unlock [1303]
Path: /Volumes/VOLUME/WD Drive Unlock.app/Contents/MacOS/WD Drive Unlock
Identifier: com.westerndigital.WDDriveUnlock
Version: 2.0.0.45 (2.0.0.45)
Code Type: X86-64 (Translated)
Parent Process: launchd [1]
User ID: 501
Date/Time: 2024-11-23 11:49:58.9117 +0100
OS Version: macOS 14.3.1 (23D60)
Report Version: 12
Anonymous UUID: 867E7C29-A5F7-9384-C84A-E8DD7E31CF51
Time Awake Since Boot: 270 seconds
System Integrity Protection: enabled
Notes:
PC register does not match crashing frame (0x0 vs 0x7FF80BA0BF60)
Crashed Thread: 0 Dispatch queue: com.apple.main-thread
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000
Exception Codes: 0x0000000000000001, 0x0000000000000000
Termination Reason: Namespace SIGNAL, Code 11 Segmentation fault: 11
Terminating Process: exc handler [1303]
VM Region Info: 0 is not in any region. Bytes before following region: 4294967296
REGION TYPE START - END [ VSIZE] PRT/MAX SHRMOD REGION DETAIL
UNUSED SPACE AT START
--->
__TEXT 100000000-100011000 [ 68K] r-x/rwx SM=COW ... Drive Unlock
Error Formulating Crash Report:
PC register does not match crashing frame (0x0 vs 0x7FF80BA0BF60)
Hi, Would love your advice. My app has been ready for months, but I've been trying to pay for the Apple Developer enrolment and I'm not having any luck. I'm in Australia and first I tried all my cards- credit cards, mastercards, visas and debit cards. They would seem to process and be marked as pending and would never process.
I then tried the Apple App Store and all the same cards could make payments there.
I emailed Apple and they said I can use alternative payments on the Apple Developer App. I downloaded the App and then it said that enrolment through the App is not available in my region. I tried on an iphone, ipad and laptop. All the same answer.
Now, I'm not getting a response to my emails to the Apple Developer Help desk.
It's really difficult because my google app has been functional for months and my customers keep asking me when the Apple version will be available.
Have you guys had anything that worked?
Any help or suggestion, gratefully received!
Ever since updating to iOS18, CarPlay has been buggy for me. One of the constant issues is that after it connects, when I select an app (eg google maps or Spotify), the entire app will freeze. This happens regardless of the app I choose. Nothing on the app will be responsive unless I use the physical car controls to back out of the app. Once I’m on the main view of carplay (where it shows all the apps or where it shows the maps/audio mixes screen) then carplay becomes responsive again. But since I can’t use any of the apps as soon as I select one, I have to reboot my phone to resolve the issue. However, the issue will just happen again ok a subsequent attempt to connect. Some times it will work ok, probably happens again every 2-3 times I connect. This never happened prior to iOS18.
Any suggestions?
We're build a pkg with three apps in it from the command line. There is one primary app and two supporting apps. We build a folder structure inside a temp directory like below (some folder names replaced with generic ones):
mkdir -p ./tmp/Applications/.hiddenfolder/
mkdir -p ./tmp/Library/Application\ Support/Company/
mkdir -p ./tmp/Library/Preferences/
mkdir -p ./tmp/Library/Logs/Company/
mkdir -p ./tmp/Library/LaunchAgents/
mkdir -p ./tmp/Library/Company/
mkdir -p ./tmp/Library/LaunchDaemons/
#Grant Logs Folder Read-Write Access to All
chmod a+rw ./tmp/Library/Logs/Company/
chmod a+rw ./tmp/Library/Application\ Support/Company/
We then build and sign each app dependency and place them into the temporary folder. For each app we're calling:
xcodebuild -workspace "$PROJECT" -scheme "$TARGET" -configuration Release -derivedDataPath "$WORKING" clean build
codesign --force --deep -o runtime --entitlements "../$TARGET/$APPLICATION.entitlements" --sign "$DEVKEY" "$WORKING/Build/Products/Release/$APPLICATION.app"
cp -R "$WORKING/Build/Products/Release/$APPLICATION.app" "$DESTINATION"
The primary app is copied into ./tmp/Applications/.hiddenfolder/ . The other two apps are put in ./tmp/Library/Company/ and ./tmp/Applications/
We then create the component list, build, and notarize the final pkg using the script below:
Some definitions of the variables used below:
IDENTIFIER=com.company.pkg.app1 (not real id but an example)
ROOT=./tmp
SCRIPTS=./scripts
GUI=./pkggui
pkgbuild --analyze --identifier "$IDENTIFIER" --version "$VERSION" --root "$ROOT" --scripts "$SCRIPTS" "$NAME-tmp.plist"
/usr/libexec/PlistBuddy -c "SET 0:BundleIsRelocatable NO" "$NAME-tmp.plist"
/usr/libexec/PlistBuddy -c "SET 1:BundleIsRelocatable NO" "$NAME-tmp.plist"
/usr/libexec/PlistBuddy -c "SET 2:BundleIsRelocatable NO" "$NAME-tmp.plist"
pkgbuild --identifier "$IDENTIFIER" --version "$PKGVERSION" --root "$ROOT" --scripts "$SCRIPTS" --component-plist "$NAME-tmp.plist" "$NAME-tmp.pkg"
productbuild --synthesize --package "$NAME-tmp.pkg" distribution.xml
sed -i "" \
-e '$ i\
\ <title>App1</title>' \
-e '$ i\
\ <background file="background.icns" alignment="bottomleft" scaling="proportional" />' \
-e '$ i\
\ <welcome file="welcome.txt" />' \
-e '$ i\
\ <installation-check script="InstallationCheck()"/> \
<script> \
function InstallationCheck(prefix) { \
if (system.compareVersions(system.version.ProductVersion, '12.0') < 0) { \
my.result.message = "This update requires OS X version 12.0 or later."; \
my.result.type = "Fatal"; \
return false; \
} \
return true; \
} \
</script>' \
"distribution.xml"
productbuild --distribution distribution.xml --resources "$GUI" --package-path "./$NAME-tmp.pkg" --sign "$DEVKEY" "$NAME.pkg"
Once built and notarized this pkg becomes the base for the installers we give to customers. For each customer we have some custom parameters we set in a plist file inside the pkg, which requires us to expand the pkg out, add the plist file to /Library/Preferences/ in the expanded pkg, and then flattent/re-notarize the edited pkg.
What we're running into is that the primary app (App1 above) will intermittently disappear after installation. We check all of the files we lay down in the postinstall script, and usually it detects the app in the correct location (/Applications/.hiddenfolder/), so it appears that it is correctly laying the files down but something is removing the app after installation. A couple of times the postinstall script has detected that the app is not in the correct place and fails, but usually the install will finish and only the other two apps remain. So far we've found no logs or evidence of it being moved or deleted; it just ceases to exist after installation.
Has anyone else had this issue and found a solution?
LSSetDefaultHandlerForURLScheme is flagged as deprecated, but it isn't clear to me (very much not a frequent macOS developer) what the alternative is.
Can anyone point me in the right direction?
Thanks.
I recently upgared my mac to 15.1, After upgrading I am unable to install app on 15.1 Mac OS 15.1, sequoia.
App is getting stuck in “Preparing for the installation” stage.
Is there a way to determine if the same underlying card was used in multiple Apple Pay payments? Is there any sort of FPAN ID, fingerprint or card ID that would be the same between Apple Pay payments that used the same card?
Could it be the "ApplePayPaymentPass"?
https://developer.apple.com/documentation/apple_pay_on_the_web/applepaypaymentpass
Updated to iOS 18.1.1 ‘share’ button is not working across various apps. For example, if I receive a pdf on WhatsApp, and I intend to share it to my Google Drive, nothing happens when I hit the button. Anyone else encountering the same problem? And how do I fix it? It’s been like this for a couple of days now and it’s really frustrating.
Hi, I was wondering if there is a way to open apple pay just by clicking a link, no need to create a payment request. If there's no way to do it, I found out that we can interact with the app through JS, but even in JS I didn't find a way to simply open it.
Hello,
I'm currently developing an emergency and security app for a client.
This app is designed to notify organisations and its users of emergency situations.
Our client has asked whether it’s possible to programmatically trigger the SOS Emergency feature on iOS.
Could you let me know if this functionality is available?
Many thanks!
Alex
I've been trying to setup a successful migration, but it keeps failing with this error:
NSCloudKitMirroringDelegate are not reusable and should have a lifecycle tied to a given instance of NSPersistentStore.
I can't find any information about this online. I added breakpoints throughout the code in willMigrate, and it originally failed on this line:
try? context.save()
I removed that, and it still failed. After I reload the app, it doesn't run the migration again and the app loads successfully. I figured since it crashed, it would keep trying, but I guess not. Here's how my migration is setup.
enum MigrationV1ToV2: SchemaMigrationPlan {
static var schemas: [any VersionedSchema.Type] {
[SchemaV1.self, SchemaV2.self]
}
static var stages: [MigrationStage] {
[stage]
}
static let stage = MigrationStage.custom(
fromVersion: SchemaV1.self,
toVersion: SchemaV2.self,
willMigrate: { context in
// Get cycles
let cycles = try? context.fetch(FetchDescriptor<SchemaV1.Cycle>())
if let cycles {
for cycle in cycles {
// Create new recurring objects based on what's in the cycle
for income in cycle.income {
let recurring = SchemaV2.Recurring(name: income.name, frequency: income.frequency, kind: .income)
recurring.addAmount(.init(date: cycle.startDate, amount: income.amount))
context.insert(recurring)
}
for expense in cycle.expenses {
let recurring = SchemaV2.Recurring(name: expense.name, frequency: expense.frequency, kind: .expense)
recurring.addAmount(.init(date: cycle.startDate, amount: expense.amount))
context.insert(recurring)
}
for savings in cycle.savings {
let recurring = SchemaV2.Recurring(name: savings.name, frequency: savings.frequency, kind: .savings)
recurring.addAmount(.init(date: cycle.startDate, amount: savings.amount))
context.insert(recurring)
}
for investment in cycle.investments {
let recurring = SchemaV2.Recurring(name: investment.name, frequency: investment.frequency, kind: .investment)
recurring.addAmount(.init(date: cycle.startDate, amount: investment.amount))
context.insert(recurring)
}
}
//try? context.save()
} else {
print("The cycles were not able to be fetched.")
}
},
didMigrate: { context in
// Get new recurring objects
let newRecurring = try? context.fetch(FetchDescriptor<SchemaV2.Recurring>())
if let newRecurring {
for recurring in newRecurring {
// Get all recurring with the same name and kind
let sameName = newRecurring.filter({ $0.name == recurring.name && $0.kind == recurring.kind })
// Add amount history to recurring object, and then remove matching
for match in sameName {
recurring.amountHistory.append(contentsOf: match.amountHistory)
context.delete(match)
}
}
//try? context.save()
} else {
print("The new recurring objects could not be fetched.")
}
}
)
}
Here's is my modelContainer in the app file. There is a fatal error occurring here that's crashing the app.
var sharedModelContainer: ModelContainer = {
let schema = Schema(versionedSchema: SchemaV2.self)
let modelConfiguration = ModelConfiguration(schema: schema, isStoredInMemoryOnly: false)
do {
return try ModelContainer(
for: schema,
migrationPlan: MigrationV1ToV2.self,
configurations: [modelConfiguration]
)
} catch {
fatalError("Could not create ModelContainer: \(error)")
}
}()
Does anyone have any suggestions for this?
EDIT:
I found this error in the console that may be relevant.
BUG IN CLIENT OF CLOUDKIT: Registering a handler for a CKScheduler activity identifier that has already been registered (com.apple.coredata.cloudkit.activity.export.8F7A1261-4324-40B4-B041-886DF36FBF0A).
CloudKit setup failed because it couldn't register a handler for the export activity. There is another instance of this persistent store actively syncing with CloudKit in this process.
And here is the fatal error
Fatal error: Could not create ModelContainer: SwiftDataError(_error: SwiftData.SwiftDataError._Error.loadIssueModelContainer, _explanation: nil)
Hi,
I'm making changes in boarding pass through my webService and I changing Seat information but Wallet is not highlighting this information.
Am I doing wrong? What do I need to do? Do need I inform anything?
The request I do to silent push notification:
apns-priority: 5
apns-topic: pass.****
apns-push-type: background
{ "aps": { "content-available": "1" } }
Images links (before/after changes)
https://ibb.co/0sPkbSZ
https://ibb.co/rZR1jcC
https://ibb.co/BCZKF1h
https://ibb.co/zxQNGWW
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!