We use File Provider Extension in our main app, and it is working fine.
We always call "NSFileProviderManager.add(_:completionHandler:)" function to start the extension, and "NSFileProviderManager.disconnect(reason:options:completionHandler:)" to temporarily quit the extension with the reason which will be shown in the Finder at the top of the FP domain folder.
But sometimes, when the main app calls the above functions, the following issue cases occur, and the extension does not start/stop:
The completionHandler function doesn't get called (As we noticed, we waited for 2 minutes. Then, we restarted the main app.)
One of the following errors returned: i) "The application cannot be used right now", ii) "Couldn't communicate with the helper application", iii) "No valid file provider found with identifier"
Here, the important thing is that restarting the main app once or twice clears the issue, and the extension starts.
But it is frustrating to restart the app each time we get this issue.
We want to know the following things:
Why and when do the above issues occur?
Why do they occur only sometimes, and how does the app restart clear the issue?
How do we resolve them without restarting the main app?
This has become a critical issue, so a detailed explanation would be greatly appreciated. TIA.
Developer Forums
RSS for tagAsk questions about how to use the Apple Developer Forums. Discuss forums bugs and enhancements requests that you’ve filed via Feedback Assistant.
Post
Replies
Boosts
Views
Activity
Hello, all,
I'm new to iOS development and working on a project with the following setup:
Architecture:
Windows PC running Ubuntu (WSL) hosting a WebSocket Server with self-signed SSL
Python GUI application as a client to control iOS app
iOS app as another client on physical iPhone
Server running on wss://***.***.***.1:8001 (this is the mobile hotspot IP from Windows PC which the iPhone is needed to connect to as well)
Current Status:
✓ Server successfully created and running
✓ Python GUI connects and functions properly
✓ iOS app initially connects and communicates for 30 seconds
✗ iOS connection times out after 30 seconds
✗ Map updates from GUI don't sync to iOS app
Error Message in Xcode terminal:
WebSocket: Received text message
2024-11-25 15:49:03.678384-0800 iVEERS[1465:454666] Task <CD21B8AD-86D9-4984-8C48-8665CD069CC6>.<1> finished with error [-1001] Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo={_kCFStreamErrorCodeKey=-2103, _NSURLErrorFailingURLSessionTaskErrorKey=LocalWebSocketTask <CD21B8AD-86D9-4984-8C48-8665CD069CC6>.<1>, _NSURLErrorRelatedURLSessionTaskErrorKey=(
"LocalWebSocketTask <CD21B8AD-86D9-4984-8C48-8665CD069CC6>.<1>"
), NSLocalizedDescription=The request timed out., NSErrorFailingURLStringKey=wss://***.***.***.1:8001/, NSErrorFailingURLKey=wss://***.***.***.1:8001/, _kCFStreamErrorDomainKey=4}
Technical Details:
Using iOS built-in URLSessionWebSocketTask for WebSocket connection
Self-signed SSL certificate
Transport security settings configured in Info.plist
Map updates use base64 encoded PNG data
Questions:
What's causing the timeout after 30 seconds?
How can I maintain a persistent WebSocket connection?
Why aren't map updates propagating to the iOS client?
Any guidance/suggestions would be greatly appreciated. Please let me know if additional code snippets would help on what I currently have.
Hello,
I have a very basic quic client implementation. When you run this code with some basic quic server, you will see that we can't get a handle to stream identifier 0, but behavior is actually different when we use URLSession/URLRequest, and I can see that some information can be sent over the wire for stream identifier 0 with that implementation.
You can find both code below I'm using to test this.
I'd like to get more info about how I can use stream identifier 0 with NWMultiplexGroup, if I can't use it with NWMultiplexGroup, I need a workaround to use stream with id 0 and use multiple streams over the same connection.
import Foundation
import Network
let dispatchQueue = DispatchQueue(label: "quicConnectionQueue")
let incomingStreamQueue = DispatchQueue(label: "quicIncStreamsQueue")
let outgoingStreamQueue = DispatchQueue(label: "quicOutStreamsQueue")
let quicOptions = NWProtocolQUIC.Options()
quicOptions.alpn = ["test"]
sec_protocol_options_set_verify_block(quicOptions.securityProtocolOptions, { (sec_prot_metadata, sec_trust, complete_callback) in
complete_callback(true)
}, dispatchQueue)
let parameters = NWParameters(quic: quicOptions);
let multiplexGroup = NWMultiplexGroup(to: NWEndpoint.hostPort(host: "127.0.0.1", port: 5000))
let connectionGroup = NWConnectionGroup(with: multiplexGroup, using: parameters)
connectionGroup.stateUpdateHandler = { newState in
switch newState {
case .ready:
print("Connected using QUIC!")
let _ = createNewStream(connGroup: connectionGroup, content: "First Stream")
let _ = createNewStream(connGroup: connectionGroup, content: "Second Stream")
break
default:
print("Default hit: newState: \(newState)")
}
}
connectionGroup.newConnectionHandler = { newConnection in
// Set state update handler on incoming stream
newConnection.stateUpdateHandler = { newState in
// Handle stream states
}
// Start the incoming stream
newConnection.start(queue: incomingStreamQueue)
}
connectionGroup.start(queue: dispatchQueue)
sleep(50)
func createNewStream(connGroup: NWConnectionGroup, content: String) -> NWConnection? {
let stream = NWConnection(from: connectionGroup)
stream?.stateUpdateHandler = { streamState in
switch streamState {
case .ready:
stream?.send(content: content.data(using: .ascii), completion: .contentProcessed({ error in
print("Send completed! Error: \(String(describing: error))")
}))
print("Sent data!")
printStreamId(stream: stream)
break
default:
print("Default hit: streamState: \(streamState)")
}
}
stream?.start(queue: outgoingStreamQueue)
return stream
}
func printStreamId(stream: NWConnection?)
{
let streamMetadata = stream?.metadata(definition: NWProtocolQUIC.definition) as? NWProtocolQUIC.Metadata
print("stream Identifier: \(String(describing: streamMetadata?.streamIdentifier))")
}
URLSession/URLRequest code:
import Foundation
var networkManager = NetworkManager()
networkManager.testHTTP3Request()
sleep(5)
class NetworkManager: NSObject, URLSessionDataDelegate {
private var session: URLSession!
private var operationQueue = OperationQueue()
func testHTTP3Request() {
if self.session == nil {
let config = URLSessionConfiguration.default
config.requestCachePolicy = .reloadIgnoringLocalCacheData
self.session = URLSession(configuration: config, delegate: self, delegateQueue: operationQueue)
}
let urlStr = "https://localhost:5000"
let url = URL(string: urlStr)!
var request = URLRequest(url: url, cachePolicy: .reloadIgnoringLocalCacheData, timeoutInterval: 60.0)
request.assumesHTTP3Capable = true
self.session.dataTask(with: request) { (data, response, error) in
if let error = error as NSError? {
print("task transport error \(error.domain) / \(error.code)")
return
}
guard let data = data, let response = response as? HTTPURLResponse else {
print("task response is invalid")
return
}
guard 200 ..< 300 ~= response.statusCode else {
print("task response status code is invalid; received \(response.statusCode), but expected 2xx")
return
}
print("task finished with status \(response.statusCode), bytes \(data.count)")
}.resume()
}
}
extension NetworkManager {
func urlSession(_ session: URLSession, task: URLSessionTask, didFinishCollecting metrics: URLSessionTaskMetrics) {
let protocols = metrics.transactionMetrics.map { $0.networkProtocolName ?? "-" }
print("protocols: \(protocols)")
}
func urlSession(_ session: URLSession, didReceive challenge: URLAuthenticationChallenge, completionHandler: @escaping (URLSession.AuthChallengeDisposition, URLCredential?) -> Void) {
if challenge.protectionSpace.serverTrust == nil {
completionHandler(.useCredential, nil)
} else {
let trust: SecTrust = challenge.protectionSpace.serverTrust!
let credential = URLCredential(trust: trust)
completionHandler(.useCredential, credential)
}
}
}
My 2019 Chevy Equinox has been shutting down the radio and fully restarting all electrical components when my phone is plugged in and on Apple CarPlay. It is fully restarting the system down to the charging ports. My car doesn’t have any updates it needs.
Title: Unable to Access Microphone in Control Center Widget – Is It Possible?
Hello everyone,
I'm attempting to create a widget in the Control Center that accesses the microphone, similar to how Shazam does it. However, I'm running into an issue where the widget always prints "Microphone permission denied." It's worth mentioning that microphone access works fine when I'm using the app itself.
Here's the code I'm using in the widget:
swift
Copy code
func startRecording() async {
logger.info("Starting recording...")
print("Starting recording...")
recognizedText = ""
isFinishingRecognition = false
// First, check speech recognition authorization
let speechAuthStatus = await withCheckedContinuation { continuation in
SFSpeechRecognizer.requestAuthorization { status in
continuation.resume(returning: status)
}
}
guard speechAuthStatus == .authorized else {
logger.error("Speech recognition not authorized")
return
}
// Then, request microphone permission using our manager
let micPermission = await AudioSessionManager.shared.requestMicrophonePermission()
guard micPermission else {
logger.error("Microphone permission denied")
print("Microphone permission denied")
return
}
// Continue with recording...
}
Issues:
The code consistently prints "Microphone permission denied" when run from the widget.
Microphone access works without issues when the same code is executed from within the app.
Questions:
Is it possible for a Control Center widget to access the microphone?
If yes, what might be causing the "Microphone permission denied" error in the widget?
Are there additional permissions or configurations required to enable microphone access in a widget?
Any insights or suggestions would be greatly appreciated!
Thank you.
There are at the moment a lot of spams for a bank phone number.
https://developer.apple.com/forums/thread/769506
What is really surprising is to read App Store Connect Engineer answer, each time the same:
We appreciate your interest in participating in the forums! These forums are for questions about developing software and accessories for Apple platforms. Your question seems related to a consumer feature and is better suited for the Apple Support Communities
Is it an automatic answer (I cannot believe anyone who read the post did not notice it was a spam) ? If so, couldn't it simply detect it is a spam (Apple Intelligence could come to help) and delete the message (or the account) ?
PS: it would also be a spam in Apple Support Communities
PS2: I note the message has been deleted very rapidly.
With little knowledge on C++, but help from ChatGPT, I am trying to write a plugin for OBS.
I would like to include a bonjour service in the plugin. I assume that the framework is already present on every Mac, but I don't know where it resides, and how to #include it.
Anyone can help me here?
Thanks in advance
https://developer.apple.com/forums/thread/735862?login=true
Has Apple announced a specific deadline for implementing the updates on the latest app icon changes for dark, light, and tinted themes in iOS 18?
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!
Hi, I am a developer developing a software but the vendor product that I’m using is always using the iPhone identifier for the iPhone model that the user is using.
For example, it will return iPhone16,2 when the user is using iPhone15ProMax. Is there an official documentation for iPhoneModel and iPhoneIdentifier mapping? Thanks
I’m having an issue with Firebase Cloud Messaging (FCM) where direct messages sent via the FCM token work perfectly, but notifications from Firebase Messaging Campaigns don’t reach my iOS app. Here’s what I’ve tried and confirmed so far:
Setup & What’s Working:
Direct Messages via FCM Token: These are received by the app without any issues.
Notification Permissions: All necessary permissions are granted on the device.
APNs Authentication Key: This is configured in Firebase, and the Firebase Console shows the campaign status as “Completed,” but messages don’t appear on the target device.
My Steps:
Uploaded the APNs Authentication Key in Firebase:
Opened Apple Developer Console > Certificates, Identifiers & Profiles > Keys > Registered a New Key > Checked APNs service.
Downloaded the APNs Key and uploaded it to Firebase under Project Settings > Cloud Messaging.
Firebase Console Campaign Setup:
Notification title and body are configured.
Target set to “All Users” (for testing purposes).
Message settings: sound enabled, Apple badge enabled, badge count set to 1, expiration set to 4 weeks.
Code Setup (relevant parts):
Using Firebase for authentication and data storage with Firestore.
Configured AppDelegate for Firebase, FCM, and APNs token registration.
Implemented UNUserNotificationCenterDelegate methods to show notifications when the app is in the foreground.
Observed Behavior:
The Firebase Console indicates the campaign is “Completed,” but the messages are not received on the device.
There are no errors in the Firebase Console or my Xcode logs when sending the campaign.
My AppDelegate is correctly handling the APNs token and FCM token registration.
Here’s My Code Setup in AppDelegate:
class AppDelegate: NSObject, UIApplicationDelegate, MessagingDelegate, UNUserNotificationCenterDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
FirebaseApp.configure()
Messaging.messaging().delegate = self
UNUserNotificationCenter.current().delegate = self
UNUserNotificationCenter.current().requestAuthorization(options: [.alert, .sound, .badge]) { granted, error in
if granted { print("Notification permission granted") }
}
application.registerForRemoteNotifications()
return true
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
Messaging.messaging().apnsToken = deviceToken
}
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String?) {
print("FCM Token received: \\(String(describing: fcmToken))")
}
func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
completionHandler([.alert, .badge, .sound])
}
}
Hi everyone,
usually i used to work on my xamarin application from a windows OS using Visual Studio application.
When testing IOS apps i used to connect to macbook that my boss has to my windows pc.
Nowdays i have a big problem while i try to publish an app. I select Release configuration, rebuild the project and in this case it asks me to login in with my Apple developer account but i always get an errore:
'There is an error while trying to access the auth service is not available'
Does anyone know a different way to publish an IOS app? I really do not know what to do.
This is my first time trying to publish an IOS app..
Urgent Assistance Needed: Issue Logging into Apple Developer Enterprise Account via Visual Studio 2022 - "Authentication service is unavailable."
Dear Apple Support Team,
I am encountering an issue while attempting to log into my Apple Developer Enterprise account through Visual Studio 2022. The process consistently fails with the error message: "Authentication service is unavailable."
Here are the steps I followed:
Open Visual Studio 2022.
Navigate to Tools -> Options -> Apple Developer Account -> Add Account -> Select Enterprise Account.
Attempt to log in using my Apple Developer ID and password.
Despite multiple attempts, I continue to face the error: "Authentication service is unavailable."
This issue occurs on both Windows and Mac environments, with the same results. However, I am able to log into my Apple Developer account via the browser, and the Apple service status portal shows no outages.
As this issue is impacting our ability to deliver to our customers, I kindly request your prompt assistance in resolving this matter.
Thank you in advance for your help. I look forward to your quick response.
Best regards,
KanTime Dev Team
Windows Machine
Mac Machine
This is a testing thread to try attaching crash report that was unable to be attached few days earlier when I tried to create a new thread. This test is requested by Apple DTS to help isolating the issue.
For more context: https://forums.developer.apple.com/forums/thread/747480
Crash report:
crash-log-iOS-17.crash
When I view the forums on my iPhone in landscape mode, the information distribution is not great:
Not-so-important four numbers take the whole right half of available space, with important information such as title and description being truncated. Hope this is just a bug and will be fixed!
Hi,
I noticed that the "View the thread" button recently stopped working in emails of replies from my watched threads.
The link's path seems fine but the subdomain is odd / inexistent, since Safari tells me it cannot find the server.
Did anybody else notice this issue?
Thanks so much for contributing to Apple Developer Forums. We'd love to help you get an answer, but we need a little bit more information from you first. Here's some tips on what to add to your post in order to help us help you.
Provide context to your post
Did you provide enough context of when and how this issue is occurring? Things like platform and Xcode version and language can go a long way.
Posting items like the version can also help you to remember to test on the latest software. If it's a bug that you're noticing, it may have been fixed in a recent update. Avoid stating that you're using the "current version" since these change quickly.
Example to improve on:
Current iOS, Swift
Better example:
iOS 17.5, Swift (UIKit)
Best example:
iOS 12 - iOS 17.5, Swift (UIKit), Xcode 15.4
Specific questions to answer:
What platform are you targeting? And what version of that platform?
What version of Xcode are you using?
What version of the OS are you testing on?
Add test code
Check that it's as easy as possible for someone to reproduce your issue. If you've asked a question along the lines of: "Why isn't ##INSERT_ACTION_HERE## working?", test code can go a long way.
If you're posting a link to a project, be sure that it's a newly created project created from one of Xcode's templates that's stripped down to the bare minimum amount of code and files needed to reproduce the issue. Remove any third-party dependencies to focus your project completely on Apple's APIs. See Creating a Test Project for more details.
If you're posting a code snippet, make sure you've posted enough context so that someone helping you can copy the code into their own project without having to read between the lines on the rest of your project. Also, make use of the Code Block button, which inserts triple backquote delimiters, for code snippets or logs.
Example of code block formatting.
Give a thorough description
Don't forget to add a detailed description to your post. If you only posted code, or have a minimal description, please add some details to describe your issue and, if applicable, steps needed to reproduce it and what you've tried.
Specific questions to answer:
What specific API are you using?
What are the exact steps you took?
If nothing failed, what results did you see? And what were you expecting?
If you filed a bug, what was the bug number?
What else have you tried?
Describe any errors
If you're seeing an error message, post the exact wording or a screenshot. If it results in a crash, attach the crash logs to your post.
Specific questions to answer:
If something failed, what are the symptoms of that failure?
If an API returned an error, what was that error?
Re-read the post
Come back to your post as if you'd never seen it before. Pretend you're going to answer it and think about what it may be missing, even if it wasn't mentioned in the above list. Any of this information, the more the better, is helpful to someone reading your post for the first time. A detailed description goes a long way in getting more detailed answers.
These tips should result in some more helpful answers from us and the developer community!
Revision History
2024-05-29 Initial version.
I spend a lot of time here on DevForums. Over the years I’ve read many posts, both good and bad. This page is my attempt at writing down what makes a good one. Hopefully some of you will find it useful.
Before you read this, read the official Apple Developer > Support > Developer Forums page.
If you have questions or feedback about any of the points raised here, start a new thread in the Developer Tools & Services > Developer Forums subtopic.
Share and Enjoy
—
Quinn “The Eskimo!” @ Developer Technical Support @ Apple
let myEmail = "eskimo" + "1" + "@" + "apple.com"
Quinn’s Top Ten DevForums Tips
Here are my top ten DevForums tips:
Is DevForums right for you?
Search before you ask
Keep your expectations realistic
Topic, subtopic, and tags
Craft a quality post
Prefer text over images
Include details with your questions
Crash reports
Cross posting courtesy
Resize screenshots
Include a Spinal Tap reference
Close your threads
Think about your title
Post URLs in the clear
Many of these boil down to one word: Empathy. Think about the person who’s reading your post. Can they read it? Will they understand it? Will it help them?
1. Is DevForums right for you?
To quote Apple Developer > Support > Developer Forums, Apple Developer Forums (aka DevForums) is:
a great place to post questions, exchange knowledge, and connect with
fellow developers and Apple engineers on a variety of development
topics.
DevForums is focused on developer issues. That includes the APIs in Apple’s platform SDKs, Apple tools, developer-oriented Apple services like App Store Connect, and accessory development. If you have a user-level question, you’ll have more luck over in Apple Support Communities, run by Apple Support.
DevForums is focused on Apple technologies. If you’re using a third-party tool or library, feel free to ask questions about it here, but you’re more likely to find folks with relevant expertise in that technology’s dedicated support channel.
If you want to file a bug report, do that using Feedback Assistant. If you want to discuss a bug you’ve already filed, DevForums is a great place for that. Make sure to include your bug number in your post. For more hints and tips on the bug reporting process, see Bug Reporting: How and Why?.
2. Search before you ask
DevForums has a history stretching back to 2015. Many questions have been asked and answered here. Before you start a thread, search the forums for similar threads.
For details about the search syntax, see Apple Developer > Support > Developer Forums. For a quick summary, hover over the help (?) button next to the search field.
Remember that DevForums is world readable and thus indexed by Internet search engines.
3. Keep your expectations realistic
DevForums is an informal support channel; no one is being paid to answer DevForums questions full time. Keep that in mind when you post.
Apple provides a number of formal support channels. To request formal support, go to the Apple Developer > Contact Us page.
One of those support channels is the code-level support provided by Apple Developer Technical Support (DTS). For more information about DTS, see Apple Developer > Support > Requesting Technical Support.
Asking about Apple’s unannounced plans is unlikely to yield useful results. Apple folks can’t discuss The Future™, and non-Apple folks can only speculate.
Apple folks can’t discuss Apple’s internal business practices. For example, we can’t answer why question — “Why did Apple do this?” or “Why hasn’t Apple done that?” — unless there’s existing documentation that offers an explanation. If you think Apple should do something differently, file a bug that explains what you’d like to see change and the rationale for that.
Not everyone works the same hours as you do. DevForums is a worldwide community, so there are time zones to consider, but there’s also just individual preferences. This is especially relevant around weekends, where your reply on Friday may not be seen by other folks until Monday.
Different folks use DevForums in different ways. Some folks lean in to the notification system, whereas others allocate certain times of the day, or the week, to help out.
4. Topic, subtopic, and tags
DevForums organises threads by two attributes:
A high-level topic and subtopic
A fine-grained set of tags
Folks willing to offer help often monitor a specific set of subtopics or tags, and only see threads with those attributes. To increase the odds of getting a response, choose your subtopic and tags carefully.
The list of subtopics is immediately visible on the top-level page. For a list of tags and their descriptions, go to Developer > Support > Forums Tags. That’s a lot of tags!
When choosing a subtopic, choose the most specific one. For example, if you have a question about SwiftUI, choose UI Frameworks > SwiftUI rather than Programming Languages > Swift. The latter is primarily focused on the Swift language itself.
When choosing a tag, read the description of that tag. With so many tags there are inevitably cases where a tag doesn’t mean what you think it means. For example, the Exception Handling tag is about the rarely used Exception Handling framework, not about exception handling in general, and the description makes that clear.
5. Craft a quality post
When replying, use a reply rather than a comment. Comments are best reserved for short messages, like “Thanks!” or “See this other thread.”
IMPORTANT If you reply in the comments, other folks on the thread may not be notified of your reply.
DevForums supports Markdown formatting, similar to that used on GitHub and by DocC. The editor UI has buttons for the most common things, like Bold and Italic, but don’t feel the need to limit yourself to that.
Correct formatting is particularly important for preformatted text:
Use the Inline Code button, which inserts single backquote delimiters, for inline text in code style: identifiers and so on.
Use the Code Block button, which inserts triple backquote delimiters, for blocks of text in code style: code snippets, logs, and so on.
After submitting your post, look it over to make sure that it reads well. If not, you have a short window where you can edit the post to fix things.
6. Prefer text over images
Don’t use screenshots for data that’s essentially textual, like code snippets and logs. For example, if you want to post a log message, include that as text rather than adding a screenshot. That makes it much easier for your readers to work with the text.
Use the Code Block button, which inserts triple backquote delimiters, to format blocks of text in code style.
Reserve screenshots for situations where the issue is visual, for example:
When discussing view layout problems
When posting instructions to achieve some task in a GUI app, like Xcode
7. Include details with your questions
When starting a thread, try to include all the relevant details in your post. If you skimp on these details, folks will have to reply asking for them, and that slows things down.
Specifically, anticipate the following questions:
What platform are you targeting? And what version of that platform?
What version of Xcode are you using?
What version of the OS are you testing on?
What specific API are you using?
What are the exact steps you took?
If something failed, what are the symptoms of that failure? If an API returned an error, what was that error?
If nothing failed, what results did you see? And what were you expecting?
If you filed a bug, what was the bug number?
Have you tried reproducing the issue in a small test project?
What else have you tried?
For more thoughts on this, see Tips on writing forums posts.
Oh, and if you’re having a build problem, consider attaching a full build log.
8. Crash reports
If you post a crash report, follow the instructions in Posting a Crash Report.
9. Cross posting courtesy
Don’t start multiple threads for the same issue. That just wastes everyones time.
Sometimes this happens by accident. If that’s the case, add a comment to one of the threads redirecting folks to the other one.
If you find a bunch of old threads that might be related to your issue, don’t post full replies to all of them. Pick a lead thread and post your full reply there, then reply on the other threads with a link to the lead thread. Alternatively, start a new thread and reply on all the old threads with a link to that. That’ll help focus the discussion on your specific issue.
If you post your question to another support channel, provide a link to that in your DevForums question, and vice versa. That avoids folks working on a question that’s already been answered.
10. Resize screenshots
If your post includes an image, make sure it renders well. Screenshots from Retina displays are often ridiculously large. Use Preview to crop the screenshot and, if necessary, downsample it by 50% (using Tools > Adjust Size).
11. Include a Spinal Tap reference
To be clear, this is a joke. While the occasional Spinal Tap reference is allowed, please don’t add one to all your posts (-:
12. Close your threads
If someone replies with the answer you need, mark that as correct. That gives them some credit and helps other folks with similar questions find that answer.
If you find the answer by yourself, please post a short summary of what you did. Feel free to mark that correct.
If you accidentally post two copies of the same question, choose one as the primary and, in the other one, add a comment that links to it.
13. Think about your title
When creating a thread, think carefully about your title. Your title is your thread’s ‘marketing statement’, a way to entice folks to read your post. Try to summarise your issue in 15 words or less.
Adding tags to your title makes it harder to read. Instead, add your tags with the tagging UI. See tip 4 for more on tags.
14. Post URLs in the clear
DevForums has a list of websites you can link to at will. For example, it places no restrictions on links to Swift Forums.
To link to a site that’s not on the allowlist, skip the Markdown link syntax and post your link in the clear. So, this won’t work:
Apple is based in [Cupertino](https://www.cupertino.org).
but this will:
Apple is based in Cupertino.
https://www.cupertino.org
Revision History
2024-08-29 Added a link to Creating a test project.
2024-08-07 Add more hints to tip 7.
2024-05-27 Reworked tip 4 to account for the new topic and subtopic model. Made other minor editorial changes.
2023-11-16 Added a link to [Public and Private Tags][refPaPT].
2023-02-22 Expanded tip 3.
2023-02-10 Added a note about why questions to tip 3 (another great suggestion from Scott). Added a link to Bug Reporting: How and Why?.
2023-01-09 Added a note about tags to tip 13.
2022-12-09 Expanded tip 12.
2022-08-22 Expanded tip 5 to explain why you shouldn’t reply in the comments.
2022-08-11 Expanded tip 9.
2022-06-17 Added tip 14. Updated the preamble to include a link to the main DevForums page.
2022-06-04 Added a discussion of unannounced plans to tip 3 (thanks to Scott).
2022-06-03 Added tip 13.
2022-05-24 Added tips suggested by Claude31 and Scott.
2022-05-23 First posted.
Users can upvote their own posts, yet they don't by default upon posting them. Reddit, for comparison, continues to allow users to remove their own-post upvotes, but upvotes them for the user by default. Other forums like Stack Overflow disallow own-post upvoting.
This forum has the worst of both worlds, for users can gain an algorithmic advantage by upvoting their own. It might seem like a minor issue, because it is. But it's an issue in my eyes regardless.
I've always thought that it just didn't work for me, because there was no feedback.