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
When trying the request "hotels" on MapKitJS with searchRegionPriority=default, it will return an hotel in Ramallah even if the searchRegion is very far from there. It can happen if your search region is very broad in most place (above Europe if you zoom out a lot, over Turkey and Middle East even if the bounding box is narrower), but on specific places it happens even with a small search region (like in Tripoli, Lebanon, whatever the zoom level). With searchRegionPriority=required, many hotels can be found in the same area.
Reproduce with:
https://maps-api.apple.com/v1/search?q=hotels&searchRegion=34.45512816097114,35.849070061159864,34.428418939926146,35.80795182731595&lang=en&searchRegionPriority=default
Hello,
I have a company laptop thats connected to the internet without a VPN. I need to be able to resolve my company's sub domains using a specific dns server, and have all other domains resolved by the system wide name server.
In windows, this is trivial to do. In an admin powershell I run
"Add-DnsClientNrptRule -Namespace ".foo.mycompany.com" -Nameserver "127.0.0.1"
and resolution requests for *.foo.mycompany.com is sent to a name server running on the localhost. All other dns resolution requests are handled by the system configured resolver.
MacOS does have the /etc/resolver/ solution for this, but my understanding from these forums is that this is not the recommended approach. Note - I have tried it and it works.
AFAIU, the recommended approach is to create a system Network extension using NEDNSProxyProvider, override handleNewFlow() and do what's necessary.
The issue with this solution is that it requires
handling all the dns flow
parsing of DNS datagrams to extract the host
forwarding the datagrams to the appropriate dns server
Handle responses.
Deal with flow control
Handle edge cases.
I was hoping for something much simpler than us needing to implement datagram parsing.
Could you please shed light on our options and how we could proceed ?
Hello,
I have an app in AppStore "Counter Widget". https://apps.apple.com/app/id1522170621
It allows you to add a widget to your homescreen/lockscreen to count anything.
Everything works fine except for one scenario. iOS 18+
I create 2 or more widgets for one counter. For example, medium and small widgets.
I click on the widget button to increase or decrease the value.
The button in the widget uses Button(intent: AppIntent) to update the value and calls WidgetCenter.shared.reloadAllTimelines() to update the second widget for the same counter.
For iOS 18 in this particular scenario, you don't even have to call the WidgetCenter.shared.reloadAllTimelines(). iOS already knows that there is a widget with the same INIntent settings and will update it itself.
Both widgets are updated and show the new value. Everything is correct.
Now on the homescreen I open the widget configuration for one of the widgets to change the INIntent for the widget. For example, i change the background to wallpaper. This is just a skin for the widget, and the widget is associated with the same counter value as before.
As in (2), I click the widget button to increase or decrease the value.
But now only one widget is updated. iOS ignores my call to WidgetCenter.shared.reloadAllTimelines() and does not update the second widget connected to the same counter.
As I found, iOS, when I call WidgetCenter.shared.reloadAllTimelines() from the widget itself, updates other widgets only if INIntent is absolutely equal for them.
Overriding isEqual for them did not help. That is, I cannot specify which fields from my INIntent can be ignored during such an update and consider that widgets are equal and need to be updated. Obviously iOS make this compare outside my code.
The main problem is that when the user adds a widget to the lock screen and increases and decreases the value there. After that, he opens the home screen and the widget there is not synchronized with the value from the widget on the lock screen.
How to solve this problem?
When my macOS app (currently in TestFlight and set for Mac App Store distribution) tries to terminate another app, both terminate() and forceTerminate() consistently return false. However, I can retrieve a list of all running applications so some related APIs do work.
I suspect this limitation is due to sandboxing. I have three questions:
Is there any permission or entitlement I can add in Xcode to allow my app to terminate other applications?
If no such permission exists, is there a way to guide users on how to launch my app (distributed through the Mac App Store) without sandboxing? For example, could they set it up to launch as a daemon or agent?
If unsandboxing is impossible, would I need to create a separate target specifically without sandboxing? In other words, my MacOS app would communicate with my unsandboxed daemon that would do all the terminate()-ing?
Hello,
While testing Apple Pay transaction I noticed my transactions were showing the incorrect App Name and image.
I was using two Apps which likely have similar names. BetRivers Casino and Sportsbook (app 1) and Bally Casino by BetRivers (app 2).
In the first image you see Bally Casino which is the wrong app, this is confirmed by the website links underneath. All our sites use a single app except for Ballycasino.betrivers. Our other tests did not display like this, so we would like to understand why it happened so we may assist our customers should question arise.
My other image is when our App opens Apple Pay, it shows the name "SugarHouse", I am unable to find the location of where this comes from, as we would want to edit this.
I am building a MacOS desktop app (https://anukari.com) that is using Metal compute to do real-time audio/DSP processing, as I have a problem that is highly parallelizable and too computationally expensive for the CPU.
However it seems that the way in which I am using the GPU, even when my app is fully compute-limited, the OS never increases the power/performance state. Because this is a real-time audio synthesis application, it's a huge problem to not be able to take advantage of the full clock speeds that the GPU is capable of, because the app can't keep up with real-time.
I discovered this issue while profiling the app using Instrument's Metal tracing (and Game tracing) modes. In the profiling configuration under "Metal Application" there is a drop-down to select the "Performance State." If I run the application under Instruments with Performance State set to Maximum, it runs amazingly well, and all my problems go away.
For comparison, when I run the app on its own, outside of Instruments, the expensive GPU computation it's doing takes around 2x as long to complete, meaning that the app performs half as well.
I've done a ton of work to micro-optimize my Metal compute code, based on every scrap of information from the WWDC videos, etc. A problem I'm running into is that I think that the more efficient I make my code, the less it signals to the OS that I want high GPU clock speeds!
I think part of why the OS is confused is that in most use cases, my computation can be done using only a small number of Metal threadgroups. I'm guessing that the OS heuristics see that only a small fraction of the GPU is saturated and fail to scale up the power/clock state.
I'm not sure what to do here; I'm in a bit of a bind. One possibility is that I intentionally schedule busy work -- spin threadgroups just to waste energy and signal to the OS that I need higher clock speeds. This is obviously a really bad idea, but it might work.
Is there any other (better) way for my app to signal to the OS that it is doing real-time latency-sensitive computation on the GPU and needs the clock speeds to be scaled up?
Note that game mode is not really an option, as my app also runs as an AU plugin inside hosts like Garageband, so it can't be made fullscreen, etc.
I updated to iOS 18.2 beta 2, and with it, I am able to see behind the early access requested by just swiping down, but when I do swipe down, the app closes. Does this mean I'm close to getting access?
Hi everyone,
I’m experiencing a frustrating issue with my iPhone 14 Plus after updating to iOS 18. Ever since the update, the rear camera has become almost completely unusable, while the front camera still works fine. Here’s a breakdown of the problems:
Camera app shows a black screen - When I open the Camera app and switch to the rear camera, the screen is just black with no visibility of any objects or scenes.
Limited photo capability - I can only take photos using the 0.5x zoom, and even then, the results are abnormal. Every photo taken with the rear camera has a strange green light at the lower bottom, just like the one in the attached photo.
Unavailable features - All rear camera features, like video, panorama, portrait, and cinematic mode, don’t work at all. It’s like the camera is only partially functional.
“Clips” app works normally - Interestingly, the “Clips” app is still able to take videos with the rear camera, so it seems like the camera hardware itself is fine. This issue seems specific to the Camera app and any functions within it.
I waited for two updates—iOS 18.0.1 and 18.1—hoping Apple would resolve this, but unfortunately, these updates haven’t fixed the issue. I even went to the Apple Service Centre, but since my device is out of warranty, they told me that if I want it fixed, I’d have to pay MYR905 (around USD$200+) to replace the rear camera. They diagnosed it as a hardware issue, but I can’t help but feel it’s related to the iOS 18 update, as the problem started right after updating. I’ve always taken good care of my device, so this doesn’t seem to be due to any physical damage or misuse on my part.
Is anyone else experiencing something similar? Could this be a software bug in iOS 18? Any help or insights would be greatly appreciated.
Thanks!
Hi,
I want to apply in app purchases in my app. I have set it up in xcode and on appstoreconnect, it is saying ready to submit.
I dont understand what i need to do now to connect the two. I have read i need to send my app for review for them to be reviewed, but i want to test the in app purchases first on test flight and on sandbox before i send my app for review.
Please can someone clarify for me and help me?
Hello,
We’re working on a connected watch that displays notifications and handles calls using the ANCS (Apple Notification Center Service) on a Nordic Semiconductor platform. We can manage a single call by monitoring notifications with Category ID: Incoming Call and Category ID 12: Active Call, which lets us display the call status on the watch. However, we’re facing challenges with handling multiple calls, especially around holding and resuming calls.
Our key issues are:
Tracking Call on Hold: When the first call is put on hold to answer a second call, ANCS removes the first call notification. This leaves us unable to track if there’s a call on hold until it’s resumed and reappears as an Active Call. Is there any ANCS flag, category ID, or other mechanism to indicate a call is on hold?
Tracking Total Call Duration: When resuming a held call, ANCS assigns a new Active Call category ID with a new timestamp, which reflects the resumption time rather than the original call start time. This complicates tracking the total elapsed time. Is there a way to identify that this resumed call is the same as the original one to retain the initial timestamp?
Any insights or workarounds would be greatly appreciated!
Thank you.
HI Team!
"I had submitted an update for my game which was already live. I didn’t change any designs in the game, I just removed the bugs and added a 'Rate Us' button link. Still, my game is being flagged at 4.3, even though it was previously live and running fine on the app store."
Hello,
Since 2017 I provide a free and open source Remote Desktop for macOS, Windows and Linux that supports macOS 10.7 to macOS 15. Screen capture is done with CGDisplayCreateImage and works fine. But there is a problem on macOS 15 Sequoia I can not capture the screen in the pre-login context (I am referring to the login screen before the user access into his account). The screen capture in pre-login context works fine for all macOS versions except macOS 15 Sequoia.
In last weeks I tried to fix the issue without success:
tried CGDisplayStream
tried AVCaptureScreenInput
tried ScreenCaptureKit
tried to sign the App (and executable)
None of these work before the user login, but them works only when the user is logged in.
Additional info:
I run the App with "launch agent" when user is connected.
I run the App with "launch daemon" when user is not connected.
Any help would be greatly appreciated!
Hello,
I am developing an application using VoIP Push and CallKit. I have a question: Starting with iOS 13, I understand that under the VoIP Push policy, if reportNewIncomingCall is not called continuously, the VoIP Push may be blocked. Is there a way to determine if the device has been blocked?
I am curious whether PKPushRegistry itself is unable to receive pushes or if reportNewIncomingCall returns an error when it is blocked. If push notifications are not being received, what should I do to resume receiving them?
Thank you.
I'm trying to call the Test Notification endpoint: https://developer.apple.com/documentation/appstoreserverapi/request_a_test_notification?language=objc
I'm creating a JWT bearer token using a script I run on the console with these 2 commands: npm install jsonwebtoken fs and node generate_jwt.js
Keys are taken from App Store Connect -> User and Access -> Integrations -> Keys -> In-App Purchase.
generate_jwt.js script:
const jwt = require('jsonwebtoken');
const fs = require('fs');
const keyId = 'MY_KEY_ID';
const issuerId = 'MY_ISSUER_ID';
const privateKey = `-----BEGIN PRIVATE KEY-----
MY_SECRET_KEY
-----END PRIVATE KEY-----`;
// Define JWT headers and claims
const token = jwt.sign({}, privateKey, {
algorithm: 'ES256',
expiresIn: '1h',
issuer: issuerId,
header: {
alg: 'ES256',
kid: keyId,
},
audience: 'appstoreconnect-v1'
});
console.log('JWT Token:', token);
When I run a POST https://api.storekit.itunes.apple.com/inApps/v1/notifications/test request on postman with Bearer token authentication, I get a 401 Unauthorized error.
Hello, Apple developers. I have joined the MFi certification program. My Accessory to use USB HID IAP2 communication protocol and IOS devices connected, but in the first step, the Accessory to send the following data (0 XFF, 0 x55, 0 x02, 0 x00 to 0 xee, 0 x10) for IOS devices, but the IOS devices have no response, this is probably the reason why?
error: Error Domain=NSCocoaErrorDomain Code=256 "The application “Google Chrome” could not be launched because a miscellaneous error occurred." UserInfo={NSURL=file:///Applications/Google%20Chrome.app/, NSLocalizedDescription=The application “Google Chrome” could not be launched because a miscellaneous error occurred., NSUnderlyingError=0x6000038376c0 {Error Domain=RBSRequestErrorDomain Code=5 "Launch failed." UserInfo={NSLocalizedFailureReason=Launch failed., NSUnderlyingError=0x6000038349f0 {Error Domain=OSLaunchdErrorDomain Code=112 "Could not find specified domain" UserInfo={NSLocalizedFailureReason=Could not find specified domain}}}}}
I'm experiencing a persistent issue with transparent WebM videos rendered via WKWebView in an iOS Capacitor app. The videos play normal, however, they display a black background frame, which does not occur in the web version of the app. I've tried:
Playing with the css setting,
Enabling experimental WKWebView features,
Adjusting meta tags for inline video playback and hardware acceleration.
That my code:
showThumbs={false}
showStatus={false}
showIndicators={true}
showArrows={false}
infiniteLoop={true}
autoPlay={true}
interval={5000} // Change slide every 5 seconds
onChange={(index) => {
if (playerRefs.current[index]) {
playerRefs.current[index]?.seekTo(0);
playerRefs.current[index]?.getInternalPlayer()?.play();
}
}}
>
{videos.map((video, index) => (
<div key={index} className="video-slide">
<ReactPlayer
ref={(player) => (playerRefs.current[index] = player)}
url={video.src}
playing={isLoaded[index]} // Play only when video is loaded
loop
muted
width="100%"
onReady={() => handleVideoReady(index)} // Set loaded state when video is ready
style={{ backgroundColor: 'transparent' }}
config={{
file: {
attributes: {
playsInline: true,
},
},
}}
/>
<p className="description">{video.description}</p>
</div>
))}
</Carousel>
Working with React, capacitor.
The videos work perfect when I test it on the web app, the problem occurs just on my ios app
The app works on iPhone 16 Pro OS18.1 paired AW 10 OS11.0 but when the same iPhone paired with AW OS 11.1, I got the warning below and watch is not responsive
Could not get trait set for device Watch7,9 with version 11.1
I hav the 16 Pro Max running 18.1. My facebook, TikTok and other apps seem to not have sound when I get their notification, my phone settings is always anable with sound, apps also enable with sound, please any suggestions
Environment
iPad:10th
iOS:18.1
Printer:EPSON PX-S730
Problem
In iOS18.1, When printing with AirPrint, PrintCenter is no longer displayed on AppSwitcher.
In iOS17, PrintCenter was displayed on AppSwitcher.
Question
Is this a specification change?
I would like to know if there is a way to check PrintCenter on AppSwitcher in the same way as iOS17.
Ref
No information after iOS18.1 update.
https://support.apple.com/ja-jp/109349
There is no mention of AirPrint updates in the AppleDeveloper release notes.
https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-18-release-notes
https://developer.apple.com/documentation/ios-ipados-release-notes/ios-ipados-18_1-release-notes