right now it looks like the app type must follow the guidelines like Messenger app, Navigate app, and Music app only. What about the Automotive app itself, What is the flexibility of it?
We have an app for service cars for one brand (officially)(car users around 1m+). but we looking to merge the experience between outside the car and inside the car. Can we top up some features on the app to share some information that is a part of the car like trip calculation or car info display on the screen? or services time to notice them?
And following that question can we know about the exact spot or brief from Apple car play for now and next-gen?
Or can we work with your team closely as a partner? to make things happen and develop it to be a flagship product, we can share some data and talk about it with real insight.
Create elegant and intuitive apps that integrate seamlessly with Apple platforms.
Post
Replies
Boosts
Views
Activity
AppStore download link:https://apps.apple.com/cn/app/%E7%9B%BC%E4%B9%8B%E4%BB%A3%E5%94%AE-%E4%B8%93%E4%B8%9A%E7%9A%84%E6%B8%B8%E6%88%8F%E6%9C%8D%E5%8A%A1%E5%B9%B3%E5%8F%B0/id6737429967. Why can this app be listed on the AppStore when it involves game account transactions? I have recorded and reported many times, but it has no effect. Is it possible to launch the app for game account trading in Chinese Mainland now? Seeking answers.
AppStore download link:https://www.qimai.cn/app/rank/appid/6737429967/country/cn. Why can this app be listed on the AppStore when it involves game account transactions? I have recorded and reported many times, but it has no effect. Is it possible to launch the app for game account trading in Chinese Mainland now? Seeking answers.
I am developing an app that requires calling the iPhone's Face ID module to scan users' facial data. Where can I find Apple's design resources and guidelines for Face ID? The Face ID resources available in Figma are incomplete, and I need more support.
For example, in the iPhone settings, the scenario: the UI interface for scanning the user's face to collect data, specifically the circular design in the "How to Set Up Face ID" screen.
Hi community,
I have a question regarding MusicKit, is it necessary to follow a design guideline to integrate this framework into my App?
Also, when no music is reproducing in MusicKit which placeholder we should show, do you provide the resource? Or can we create our own placeholder?
Thanks for all,
David.
The most recent update included coloured icons for grouping of emails
anybody previously needing to group emails we’re able to achieve this alphabetically by simply searching for what you were looking for.
These icons clutter the page with totally unnecessary screen pollution.
if you want to persist with this folly can you please provide a classic display option for those of us who have happily survived using email for 30 years without this fluff.
I tried to create a Text View using attributedString. I want to set the line height using paragraphStyle and return the Text, but paragraphStyle is not being applied. Why is that?
extension Text {
init?(_ content: String, font: StyleType, color: Color = .ppBlack) {
var attributedString = AttributedString(content)
attributedString.font = Font.custom(font.fontWeight, fixedSize: font.fontSize)
attributedString.foregroundColor = color
let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.minimumLineHeight = 16
paragraphStyle.maximumLineHeight = 16
paragraphStyle.lineSpacing = 0
attributedString.mergeAttributes(.init([.paragraphStyle: paragraphStyle]))
self = Text(attributedString)
}
}
In Apple's Maps app, an annotation is made up of a circle shape or rounded rectangles with a glyph-image.
When selecting an annotation, the annotation animates into a balloon marker (see attached GIF).
How does Apple Maps solve this - from custom annotation to balloon marker with spring animation?
I switched my Maps implementation from SwiftUI to UIKit with a UIViewRepresentable to support annotation clustering - and it works beautifully.
But how to subclass an MKAnnotationView (or MKMarkerAnnotationView <- the balloon) to enable selection and animation as in Apple Maps?
MKMarkerAnnotationView only show balloon markers and I tried everything inside MKAnnotationView (CALayer, etc.)
Hi developers,
I have a question if it is possible to open in my application not main window but a specific ViewController, when application is installed but not running.
When the application is running in background and I scan QR code, then specific ViewController is opened over SceneDelegate and method 'userActivity'. But this does not work when the application is only installed, but not running.
The Appstore link is here: https://apps.apple.com/us/app/don%C3%A1tor/id6473955033
how to save the state of my APP when I open another APP so that It can restore when I re-open it?
my app will use over 10mb memory so if I open another APP(my app will go background) it will closed at all.
when I re-open it it will restart.
but I do not want it I want if I open Page A and then it go background and when I re-open it it still is Page A and do not restart.
Hello everyone. I'm building a simple Form in a Multiplatform App with SwiftUI. Originally I had something like this.
import SwiftUI
struct OnboardingForm: View {
@State var firstName: String = ""
@State var lastName: String = ""
@State var email: String = ""
@State var job: String = ""
@State var role: String = ""
var body: some View {
Form {
TextField("First Name", text: $firstName, prompt: Text("Required"))
TextField("Last Name", text: $lastName, prompt: Text("Required"))
TextField("Email", text: $email, prompt: Text("Required"))
TextField("Job", text: $job, prompt: Text("Required"))
TextField("Role", text: $role, prompt: Text("Required"))
}
}
}
#Preview {
OnboardingForm()
}
In macOS it looks ok but then in iOS it looks like this:
and it's impossible to know what each field is for if all the prompts are the same. I tried adding LabeledContent around each text field and that solves it for iOS but then on macOS it looks like this:
The labels are shown twice and the columns are out of alignment. I think I could get around it by doing something like this:
#if os(iOS)
LabeledContent {
TextField("First Name", text: $firstName, prompt: Text("Required"))
} label: {
Text("First Name")
}
#else
TextField("First Name", text: $firstName, prompt: Text("Required"))
#endif
but it seems to me like reinventing the wheel. Is there a "correct" way to declare TextFields with labels that works for both iOS and macOS?
Hello.
I've been struggling to get through the app review. It's been 3 months of constantly improving and adding new features to the app and getting rejected.
A week ago i got a call from apple review team, and they said that my app shares the similar binary with other apps. They don't tell the specififcs or details.
My app is a vpn app that is written by me in flutter. The only native code i have is a library that i use to work with vpn. I changed the entirity of the library, but still can't get pass. Although, the only think left is the xray-core (https://github.com/XTLS/Xray-core) framework that implemented as .xcframework to use vless protocol.
Does apple check .xcramework for similarity? i can't rewrite the framework, because it written in a go language.
I'm trying to use Image Events instead of Photoshop to manipulate a bunch of images.
I need to extend the canvas and have the padding be white. I've tried
pad theImage to dimensions {545, 545} with pad color {65535, 65535, 65535}
But that does nothing. If I remove the 'with pad colour...' part, it works but the pad defaults to black. I've looked everywhere, but there doesn't seem to be a solution.
Is there one?
My app, Plinco, was rejected under App Review Guideline 4.3 – Design Spam, stating that it shares similarities with other apps available on the App Store.
However, Plinco is a completely unique entertainment experience, designed with original assets, mechanics, and features. It allows users to customize various elements, including risk levels and configurations, ensuring a personalized and engaging experience. Special features like triple elements and the legendary golden mode introduce an extra layer of excitement and strategy. The app also offers high-quality visuals, immersive sound, and dynamic interactions, making each session feel fresh and unique.
I conducted extensive research on the App Store and found no similar apps in the Entertainment category that match Plinco's concept and functionality. My app is built from scratch, without using pre-existing templates or duplicated content.
Despite implementing multiple updates to address potential concerns, I have not received specific feedback clarifying the exact issue. I am fully committed to delivering a high-quality and original app and kindly request a more detailed explanation of the rejection, as well as a fair review of my submission.
I appreciate your time and consideration.
Hello,
My app was rejected because of App Review Guideline 4.3 – Design Spam. The response I received states:
“We noticed your app shares similar features, interface design, and functionality with other apps available on the App Store. Apps that duplicate content or functionality from other apps without adding significant value or unique user experiences are considered spam and will not be approved for distribution.”
I developed Plinking Platform Rise, a reaction and accuracy game where players control a platform to balance a ball while avoiding obstacles. The game becomes more challenging with each level, and a dark mode adds an exciting element by reducing visibility and requiring greater precision.
I’ve tried multiple times to understand the exact reasons for this rejection and made several updates to address potential issues, but all my efforts have been ignored by App Review. None of the changes I implemented led to a resolution.
This is the first app I’ve submitted to the App Store, and I developed it independently. I haven’t copied any design, functionality, or gameplay from existing apps. While my app uses Unity, which might result in some similarities, I’ve worked hard to create a unique experience with original gameplay, visuals, and mechanics.
I can’t identify any apps that closely resemble mine, but the rejection suggests otherwise. I would appreciate any advice on how to resolve this issue and demonstrate the originality of my app.
Kind regards, Ihor Koval
Hello,
My app was rejected because of App Review Guideline 4.3 – Design Spam.
I developed Dynasty of Sic Bo, an exciting game that combines elements of roulette and dice rolling. Players can bet on different dice combinations, testing their luck and strategy to win virtual riches. The game is designed to be simple and enjoyable for beginners while still engaging for experienced players.
I’ve tried multiple times to understand the exact reasons for this rejection, but all my efforts have been ignored by App Review. None of the changes I implemented resolved the issue, and I still don’t know what specifically needs to be addressed.
The app’s concept, gameplay, and design are entirely original, and I haven’t copied or reused content from other apps. While the game shares a general theme of dice-based gambling, I worked hard to create a unique experience with polished visuals, engaging mechanics, and a dynamic atmosphere.
I don’t understand how to proceed or demonstrate the originality of my app, as I can’t identify any apps that are identical to mine. I would really appreciate any advice or insights on how to resolve this issue.
Kind regards,
Nick
Bohdan Malashina
I'm receiving this error message from Apple saying that my app is crashing when they test, but I've already done the tests on the iPad version they recommended and it worked normally.
Message below of the review team:
Hello,
Thank you for your resubmission. Upon further review, we identified additional issues that need your attention. See below for more information.
If you have any questions, we are here to help. Reply to this message in App Store Connect and let us know.
Review Environment
Submission ID: 4f068d93-c30e-431c-b65c-6ff4c3ab1098
Review date: January 23, 2025
Version reviewed: 1.0
Guideline 2.1 - Performance
Issue Description
The app still crashed during review. Apps that crash negatively impact users.
Steps leading to crash:
The app crashed upon login attempt.
Review device details:
Device type: iPad Air (5th generation)
OS version: iPadOS 18.2.1
I left the file below crashlog:
{"app_name":"MauiApp2","timestamp":"2025-01-27 11:39:16.00 +0000","app_version":"4.0","slice_uuid":"11117a05-c930-3591-b6d9-7905912af710","adam_id":"6740661076","build_version":"4","bundleID":"com.company.MauiApp2","platform":2,"share_with_app_devs":0,"is_first_party":0,"bug_type":"309","os_version":"iPhone OS 18.2.1 (22C161)","roots_installed":0,"incident_id":"987579BB-C332-42CF-B7AB-3F019902703A","name":"MauiApp2"}
{
"uptime" : 40000,
"procRole" : "Foreground",
"version" : 2,
"userID" : 501,
"deployVersion" : 210,
"modelCode" : "iPad13,16",
"coalitionID" : 1424,
"osVersion" : {
"isEmbedded" : true,
"train" : "iPhone OS 18.2.1",
"releaseType" : "User",
"build" : "22C161"
},
"captureTime" : "2025-01-27 11:39:15.7724 +0000",
"codeSigningMonitor" : 1,
"incident" : "987579BB-C332-42CF-B7AB-3F019902703A",
"pid" : 1883,
"translated" : false,
"cpuType" : "ARM-64",
"roots_installed" : 0,
"bug_type" : "309",
"procLaunch" : "2025-01-27 11:38:57.0672 +0000",
"procStartAbsTime" : 979679570352,
"procExitAbsTime" : 980128429544,
"procName" : "MauiApp2",
"procPath" : "\/private\/var\/containers\/Bundle\/Application\/240115B9-6606-406B-BD49-C24EC7F3D436\/MauiApp2.app\/MauiApp2",
"bundleInfo" : {"CFBundleShortVersionString":"4.0","CFBundleVersion":"4","CFBundleIdentifier":"com.company.MauiApp2","DTAppStoreToolsBuild":"16C5031b"},
"storeInfo" : {"itemID":"6740661076","deviceIdentifierForVendor":"27BFDD21-822E-47D6-B639-199303E14913","thirdParty":true,"softwareVersionExternalIdentifier":"871814512"},
"parentProc" : "launchd",
"parentPid" : 1,
"coalitionName" : "com.company.MauiApp2",
"crashReporterKey" : "83a5662fa3ae9a4fa99bf1f03c706f755ff38e3d",
"appleIntelligenceStatus" : {"state":"unavailable","reasons":["notOptedIn","assetIsNotReady"]},
"wasUnlockedSinceBoot" : 1,
"isLocked" : 0,
"codeSigningID" : "com.company.MauiApp2",
"codeSigningTeamID" : "ALCV75QR7M",
"codeSigningFlags" : 570450689,
"codeSigningValidationCategory" : 4,
"codeSigningTrustLevel" : 7,
"instructionByteStream" : {"beforePC":"fyMD1f17v6n9AwCRPOz\/l78DAJH9e8Go\/w9f1sADX9YQKYDSARAA1A==","atPC":"AwEAVH8jA9X9e7+p\/QMAkTHs\/5e\/AwCR\/XvBqP8PX9bAA1\/WECeA0g=="},
"bootSessionUUID" : "942643AD-6AFE-4696-ACEB-603AC2D48B4F",
"exception" : {"codes":"0x0000000000000000, 0x0000000000000000","rawCodes":[0,0],"type":"EXC_CRASH","signal":"SIGABRT"},
"termination" : {"flags":0,"code":6,"namespace":"SIGNAL","indicator":"Abort trap: 6","byProc":"MauiApp2","byPid":1883},
"asi" : {"libsystem_c.dylib":["abort() called"]},
"faultingThread" : 0,
"threads" : [{"threadState":{"x":[{"value":0},{"value":0},{"value":0},{"value":0},{"value":18446744071913938304},{"value":8},{"value":6135065824},{"value":6135063504},{"value":2354241331284576430},{"value":2354241335696964078},{"value":1023},{"value":6135063616},{"value":0},{"value":4336219676},{"value":7128134088,"symbolLocation":7344,"symbol":"WebKit::WebPage::requestDocumentEditingContext(WebKit::DocumentEditingContextRequest&&, WTF::CompletionHandler<void (WebKit::DocumentEditingContext&&)>&&)"},{"value":7128134340,"symbolLocation":7596,"symbol":"WebKit::WebPage::requestDocumentEditingContext(WebKit::DocumentEditingContextRequest&&, WTF::CompletionHandler<void (WebKit::DocumentEditingContext&&)>&&)"},{"value":328},{"value":8506093888,"symbolLocation":0,"symbol":"_main_thread"},{"value":0},{"value":6},{"value":259},{"value":8506094112,"symbolLocation":224,"symbol":"_main_thread"},{"value":4354417664},{"value":1},{"value":12927714000},{"value":0},{"value":0},{"value":6135069717},{"value":12950787712}],"flavor":"ARM_THREAD_STATE64","lr":{"value":9082160540},"cpsr":{"value":1073745920},"fp":{"value":6135065840},"sp":{"value":6135065808},"esr":{"value":1442840704,"description":" Address size fault"},"pc":{"value":8120668884,"matchesCrashFrame":1},"far":{"value":0}},"id":399494,"triggered":true,"name":"tid_103","queue":"com.apple.main-thread","frames"
While click on notification tray I do not want to open my ticket.
Hello,
I noticed a small mistake in the Human Interface Guidelines (HIG).
On the page HIG > Components > System Experiences > Widget > watchOS Widget Dimensions, scroll down to the bottom. In the "watchOS widget dimensions" section, the sizes in the table are in pixels (px), not points (pt) actually. However, the table header indicates the sizes should be in points (pt).
Page link:
https://developer.apple.com/design/human-interface-guidelines/widgets#watchOS-widget-dimensions
For example, the widget size in the Smart Stack on a 49mm watch should be 192x81.5 pt (or 382x163 px), not 382x163 pt. This size can be verified with the information provided here:
https://developer.apple.com/documentation/watchos-apps/supporting-multiple-watch-sizes/.
https://developer.apple.com/documentation/watchkit/wkinterfacedevice/1620974-screenscale
Hi everyone, I'm currently working on my own Apple TV app. So far, things are going pretty well, but right now, I'm stuck on the design of the categories or selection menus.
Here's a screenshot of how it looks right now:
The green color and the border are intentionally added for now so I can see what is where. My actual goal is to remove the gray bar (or is this the "main bar"?). The pink bar and its border are just design elements that can be removed if needed. I want it to look more "original," like this:
Here is the code:
let title: String
let isSelected: Bool
var body: some View {
HStack {
Text(title)
.foregroundColor(isSelected ? .black : .white)
.font(.system(size: 22, weight: .regular))
.padding(.leading, 20)
Spacer()
Image(systemName: "chevron.right")
.foregroundColor(isSelected ? .black : .gray)
.padding(.trailing, 20)
}
.frame(height: 50) // Einheitliche Höhe für die Kategorien
.background(Color.pink) // Innerer Hintergrund auf pink gesetzt
.cornerRadius(10) // Abrundung direkt auf den Hintergrund anwenden
.overlay(
RoundedRectangle(cornerRadius: 10)
.stroke(Color.green, lineWidth: 3) // Äußerer Rahmen auf grün gesetzt
)
.padding(.horizontal, 0) // Entferne äußere Ränder
.background(Color.clear) // Entferne alle anderen Hintergründe
}
}
struct SettingsView_Previews: PreviewProvider {
static var previews: some View {
SettingsView()
}
}
I’ve adjusted the code, but it’s still not quite right. When a category is not selected, it appears black instead of gray, like in the original design
Here is the code:
struct SettingsView: View {
@State private var selectedCategory: String?
var body: some View {
NavigationStack {
ZStack {
Color.black
.edgesIgnoringSafeArea(.all)
VStack(spacing: 0) {
// Überschrift oben in der Mitte
Text("Einstellungen")
.font(.system(size: 40, weight: .semibold))
.foregroundColor(.white)
.padding(.top, 30)
HStack {
// Linke Seite mit Logo
VStack {
Spacer()
Image(systemName: "applelogo")
.resizable()
.scaledToFit()
.frame(width: 120, height: 120)
.foregroundColor(.white)
Spacer()
}
.frame(width: UIScreen.main.bounds.width * 0.4)
// Rechte Seite mit Kategorien
VStack(spacing: 15) {
ForEach(categories, id: \.self) { category in
NavigationLink(
value: category,
label: {
SettingsCategoryView(
title: category,
isSelected: selectedCategory == category
)
}
)
.buttonStyle(PlainButtonStyle())
}
}
.frame(width: UIScreen.main.bounds.width * 0.5)
}
}
}
.navigationDestination(for: String.self) { value in
Text("\(value)-Ansicht")
.font(.title)
.foregroundColor(.white)
.navigationTitle(value)
}
}
}
private var categories: [String] {
["Allgemein", "Benutzer:innen und Accounts", "Video und Audio", "Bildschirmschoner", "AirPlay und HomeKit", "Fernbedienungen und Geräte", "Apps", "Netzwerk", "System", "Entwickler"]
}
}
struct SettingsCategoryView: View {
let title: String
let isSelected: Bool
var body: some View {
HStack {
Text(title)
.foregroundColor(.white)
.font(.system(size: 22, weight: .medium))
.padding(.leading, 20)
Spacer()
Image(systemName: "chevron.right")
.foregroundColor(.gray)
.padding(.trailing, 20)
}
.frame(height: 50) // Einheitliche Höhe für die Kategorien
.background(isSelected ? Color.gray.opacity(0.3) : Color.clear) // Hervorhebung des ausgewählten Elements
.cornerRadius(8) // Abgerundete Ecken
.scaleEffect(isSelected ? 1.05 : 1.0) // Fokus-Animation
.animation(.easeInOut, value: isSelected)
}
}
struct SettingsView_Previews: PreviewProvider {
static var previews: some View {
SettingsView()
}
}