Hi,
I have an app available on both iOS and macOS platforms, and we would like to remove the macOS version from sale while keeping the iOS version active. I looked into App Store Connect for an option to remove just one platform, but it doesn't seem to be available. The "Pricing and Availability" section also applies universally to all platforms, not platform-specific.
What would be the best approach to achieve this? I would appreciate any suggestions.
Best regards,
Apparao Mulpuri
Posts under iOS tag
200 Posts
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Case-ID: 9391388
Our application uses timed Metadata as part of a rating control system.
We noticed a problem in production and diagnosis shows that we stop receiving timed Metadata on iOS18 only
Our live streams are primed with metadata at least once per second but we are seeing extended gaps in receiving this content, in excess of 10 minutes.
We have also observed that this happens more as the player climbs the bitrate ladder, and doesn't happen if we cap to a low resolution
i.e. a preferredMaximumResolution of 768x432.
Furthermore, if we throttle network conditions after we stop receiving metadata the we start receiving them again.
Following is a simple example that demonstrates the above behaviour, unfortunately I cannot share the live stream endpoint which is primed with metadata publicly, but can provide privately to Apple to reproduce the problem.
import UIKit
import AVKit
class ViewController: UIViewController, AVPlayerItemMetadataOutputPushDelegate {
var player: AVPlayer?
var itemMetadataOutput: AVPlayerItemMetadataOutput?
override func viewDidAppear(_ animated: Bool) {
guard let url = URL(string: "endpoint redacted") else {
return
}
let player = AVPlayer(url: url)
let controller = AVPlayerViewController()
controller.player = player
self.player = player
present(controller, animated: true) {
player.play()
let currentItem = player.currentItem
let itemMetadataOutput = AVPlayerItemMetadataOutput(identifiers: nil)
self.itemMetadataOutput = itemMetadataOutput
self.itemMetadataOutput?.setDelegate(self, queue: .main)
currentItem?.add(itemMetadataOutput)
}
}
public func metadataOutput(_ output: AVPlayerItemMetadataOutput,
didOutputTimedMetadataGroups groups: [AVTimedMetadataGroup],
from track: AVPlayerItemTrack?) {
print("received metadata \(Date())")
}
}
Hi, I have a project that uses SwiftUI, where we have a TabView, and in one of the tabs, I have a NavigationStack(path:). And created a logic to clear the NavigationStack path everytime you change to another Tab.
But found a bug, that if for some reason when doing a navigation in the NavigationStack, and rapidly tapping to another Tab, the NavigationStack doesn't gets clean up, or even if you have for some reason something allocated in the view you were navigation, doesn't get deinit if you have the logic for deinit a object when dismissing the view.
The environment I have is:
iPhone 12 Pro Max with iOS 17.6.1
This is the code that I have:
struct TabBarView: View {
@ObservedObject var tabBarVC = TabBarViewController()
var body: some View {
TabView(selection: $tabBarVC.selectedTab) {
Text("HomeView")
.tabItem {
Label("Home", systemImage: "house")
}
.tag(TabBarViewController.Tab.home)
SettingsView(settingsVC: tabBarVC.settingsVC)
.tabItem {
Label("Settings", systemImage: "gear")
}
.tag(TabBarViewController.Tab.settings)
}
.onChange(of: tabBarVC.selectedTab) { oldValue, newValue in
tabBarVC.settingsVC.clearNavigationPath()
}
}
}
class TabBarViewController: ObservableObject {
enum Tab {
case home
case settings
}
@Published var selectedTab: Tab = .home
@Published var settingsVC: SettingsViewController = .init()
}
class SettingsViewController: ObservableObject {
enum Destination {
case viewOne
case viewTwo
case viewThree
}
@Published var navigationPath: NavigationPath = .init()
func navigateTo(destination: Destination) {
self.navigationPath.append(destination)
}
func clearNavigationPath() {
self.navigationPath = .init()
}
}
The expected I am looking for is that everytime you change your tab, it cleans up the navigation stack, even if you change the tab when there is a navigation animation in process.
When you zoom in photo and swipe to another photos as usual. It would show the other photos in the background where should be black. it happened even after updated to the latest
I have installed iOS 18 to my iPhone 13 Pro Max and now the future that can minimise the video call when turned on Picture in Picture mode dose not work anymore in telegram, while the rest of the apps are working fine.
if anyone know how to fix this please reply.
Hello.
I would like to ask for an assistance with testing AdAttributionKit flow that seems not working.
Goal: to close the AdAttributionKit logic flow loop starting from presenting and handling Ad in a publisher app and ending with receiving a postback request on my end point.
Problem: No postback request is received on my configured domain. It looks like AdAttributionKit cannot connect between AppImpression invocation in Publisher App and updating postback from the Advertised App, hence no update postback request are transmitted to my endpoint.
What was done:
Testing device
iPhone 13, iOS 18.0.1
Production Apple ID
AdAttributionKit Developer Mode is enabled
iPhone is reset and restarted
Publisher App
Test publisher application was created and configured (according to Apple's documentation [https://developer.apple.com/documentation/adattributionkit/configuring-a-publisher-app]) with the following:
AdNetworkIdentifiers item was added to app's Info.plist with number of Ad Network IDs. I tried to use in my tests (used below insted of the placeholder):
Registered SKAdNetwork Ad Network ID that ends with .skadnetwork
Not registered Ad Network ID that ends with .adattributionkit
JWS Impression was created with the following
JWS Header: {"kid" : "","alg" : "ES256"}
JWS Payload: {"impression-type" : "app-impression","impression-identifier" : "9547875E-C052-44CD-8CB9-193978CC5AB7", "timestamp" : 1729162517373,"publisher-item-identifier" : 0,"source-identifier" : 1111,"ad-network-identifier" : "","advertised-item-identifier" : 1125517808}
JWS Data: "BASE64(JWS-Header)"."BASE64(JWS-Payload)"."SIGNED("BASE64(JWS-Header).BASE64(JWS-Payload)")"
Signing was done with temporary key (created every time the JWS is composed) by the following:
let signingInput = "\(headerBase64String).\(payloadBase64String)"
let privateKey = Curve25519.Signing.PrivateKey()
var encodedSignature = ""
do {
let signature = try privateKey.signature(for: Data(signingInput.utf8))
encodedSignature = base64UrlEncode(signature)
} catch {
print("Error signing JWS: \(error.localizedDescription)")
}
UIEventAttributionView (with UITapGestureRecognizer) was added to my ViewController's main view and in a handling method of TAP event, AppImpression was created baased on JWS above and handleTap() method of this AppImpression instance was called.
AppImpression was tapped and AppStore has been launched (because to this moment no advertised app with was installed on a device):
attributionkitd Preflighting impression
AAKPubApp Connection established
attributionkitd Validated impression for advertised app: <MY-ADVERTISED-APP-APPSTORE-ID-PLACEHOLDER>
attributionkitd No distributor bundle ID received from app fetch
attributionkitd Distributor metadata cached for item ID <MY-ADVERTISED-APP-APPSTORE-ID-PLACEHOLDER>
attributionkitd Is anything happening?
attributionkitd Processing tap
attributionkitd Successfully validated publisher application
attributionkitd Successfully finalized click through impression
attributionkitd Impression is not eligible for re-engagement
attributionkitd Launching distributor for itemID: <MY-ADVERTISED-APP-APPSTORE-ID-PLACEHOLDER>
attributionkitd [0x70008b340] activating connection: mach=false listener=false peer=false name=(anonymous)
attributionkitd Distributor launch completed for item ID: <MY-ADVERTISED-APP-APPSTORE-ID-PLACEHOLDER>
Advertised App
Advertised App is an existing application on the AppStore. It was configured according Apple's documentation [https://developer.apple.com/documentation/adattributionkit/configuring-an-advertised-app].
AttributionCopyEndpoint key with my domain ("https://<MY_DOMAIN_PLACEHOLDER>.com") was added to app's Info.plist
EligibleForAdAttributionKitReengagementPostbackCopies key with "YES" value was added to Info.plist as well.
Number of postback method calls were added to the application in different places including application:didFinishLaunchingWithOptions.
Used AdAttributionKit method - (updateConversionValue(_:coarseConversionValue:lockPostback:)) [https://developer.apple.com/documentation/adattributionkit/postback/updateconversionvalue(_:coarseconversionvalue:lockpostback:)]
Application is written in Objective-C while using AdAttributionKit via Swift-to-ObjC regular bridging.
I tried to use Advertised App in the following ways:
To run it from Xcode. This way, when the advertised app is already installed, AppImpression tap in the publisher App doesn't recognize the Advertised App is installed and launches AppStore.
To install it from TestFlight. This way, AppImpression tap in the publisher App successfully recognizes the Advertised App is installed and launches it.
Both ways yield the same result - explanation below.
Advertised App launched - while calling update postback method in application:didFinishLaunchingWithOptions
attributionkitd Updating postback
attributionkitd Queueing update postback
attributionkitd [TXNf0dc] 🐏 Beginning transaction (Task runner: atomic)
attributionkitd Begin update postback
<MY-APPLICATION-NAME-PLACEHOLDER> Connection established
attributionkitd [TXN5421] 🐏 Ending transaction (<private>) (<private>)
attributionkitd Retrieved conversion window thresholds: <private>
attributionkitd [TXNf0dc] 🐏 Ending transaction (<private>) (<private>)
...
attributionkitd Calling launch handler for com.apple.attributionkitd.development-postback-transmission
attributionkitd Begin task for identifier: com.apple.attributionkitd.development-postback-transmission
attributionkitd Running barktivity: com.apple.attributionkitd.development-postback-transmission
attributionkitd [TXN46f0] 🐏 Beginning transaction (<private>)
attributionkitd Found 0 postbacks eligible for transmission for environments: <private>
attributionkitd Postback transmission completed
attributionkitd [TXN46f0] 🐏 Ending transaction (<private>) (<private>)
attributionkitd Marking task <BGRepeatingSystemTask: com.apple.attributionkitd.development-postback-transmission> complete
attributionkitd Task completed for identifier: com.apple.attributionkitd.development-postback-transmission
The problem I can see here is in the following line:
attributionkitd Found 0 postbacks eligible for transmission for environments: <private>
It looks like AdAttributionKit cannot connect between AppImpression invocation in Publisher App and updating postback from the Advertised App.
Please correct me in case I'm doing anything wrong or missing anything.
Thank you very much.
Hello, forum, I'm trying to build connection between a non-MFi HID device (like keyboard) and iOS app with IOKit and Swift.
Thanks to this post, I have manage to import the IOKit into objc header.
IOKit on iOS/iPadOS 16.0+
#import <IOKit/IOKitLib.h>
However, I have this compiler error when I try to imitate same methods in the SerialPortSaple project from following article, but the IOKit can not be imported to Swift at first place.
Communicating with a Modem on a Serial Port
The screen shot of the sample project:
It looks like the complier unable to reach the io_object_t type somehow, is there any workaround or approach?
I want to connect my iOS App with a MQTT Server via a Kotlin Multiplatform XCFramework.
This Framework uses the library KMQTT to connect to our MQTT Server. As you can see Here KMQTT uses the default POSIX commands to connect to a socket. This setup works great on Android, not so much for iOS:
When connecting to a IPv6 Address iOS devices get the POSIX Error 47, this was "fixed" by only using IPv4
more importantly: On ~50% of devices, when connecting to the socket they get the POSIX Error 1 (EPERM). The devices are iPhone 13, 14 Pro and a 15 and they all use either iOS 17 or iOS 18. When trying to open the ip via Safari they can connect. This problem seems to come from the Provider, as when i open a Hotspot from a device that doesn't work, all connected iOS Devices also don't work and when another device that works opens a hotspot and the not-working device connects to it, this device works.
Do you guys have any idea, why this error is thrown?
Hello everybody,
I am struggling with accessing files from the Location OneDrive through UIDocumentViewController.
The error says:
Error Domain=NSCocoaErrorDomain Code=260 "Die Datei „Testfile.txt“ konnte nicht geöffnet werden, da sie nicht existiert." UserInfo={NSFilePath=/private/var/mobile/Containers/Shared/AppGroup/11E04153-649E-416F-9860-2EA9C0913A18/File Provider Storage/item|1|18a17c69%2D5d6d%2D4b16%2Db388%2D4a9834e9440b/Testfile.txt, NSUnderlyingError=0x281202310 {Error Domain=NSPOSIXErrorDomain Code=2 "No such file or directory"}}
The Controller is initialised the following way:
let ctrl = UIDocumentPickerViewController(forOpeningContentTypes: [.image, .audio, .video, .item, .content])
And in the delegate method I do the following:
func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {
guard let documentUrl = urls.first else { return }
guard documentUrl.startAccessingSecurityScopedResource() else {
parent.errorText = "Developer Error: Can't access security scoped resource."
return
}
defer {
documentUrl.stopAccessingSecurityScopedResource()
}
do {
let data = try Data(contentsOf: documentUrl)
} catch {
parent.errorText = error.localizedDescription
}
}
Any help is appreciated!
Thanks
If user has made any app hidden and set Face ID to open it; if user removes the requirement of Face ID to open the app, user will not able to see the app again on home screen. However, app is still on the device and can be found by searching the app name.
Hi everyone,
Are there any new updates on communicating with iPhones via USB-C without needing an MFi chip, especially with the iPhone 15 or upcoming iPhone 16?
I'm developing a custom accessory and wondering if the switch to USB-C has introduced any new possibilities for data communication without going through the MFi program.
Thanks!
Hi,
I am using HealthKit for the first time.
I am using HKStatisticsCollectionQuery.
I am running my code iOS 17 on a physical iPhone.
It takes several seconds to query data, for example 1 day worth of heart rate at 1 minute resolution. I changed the resolution to 1 hour, expecting it to be faster, but it's pretty much the same…
I have been following the official documentation and sample code.
I also compiled in Release, but that didn't really help for HKStatisticsCollectionQuery.
I quickly looked with Instruments, the app is spending a lot of time in decoding data with NSXPCDecoder.
Is there a way to speed data retrieval? Or this is "expected" latency?
Hello,
I’m working on creating an NFC-enabled Apple Wallet pass and I need assistance with the proper implementation of the pass.json file to include NFC functionality. My goal is to enable NFC interactions, such as tapping to unlock a door or interacting with other NFC systems.
Here is what I have done so far:
Set up a Pass Type ID and Certificates:
I have registered a Pass Type ID in my Apple Developer account.
I have generated and installed the required certificates (Pass Type ID certificate and WWDR certificate).
Backend Integration:
I have set up a backend service for generating passes, and I can successfully create and deliver standard Wallet passes without the NFC functionality.
Adding the NFC Field:
I understand that to enable NFC interactions, I need to add an nfc dictionary to the pass.json file.
The key components for NFC include the encryptionPublicKey, message, and payload.
Here’s an example of my current pass.json:
{
"formatVersion": 1,
"passTypeIdentifier": "pass.com.example.mypass",
"serialNumber": "123456",
"teamIdentifier": "TEAMID12345",
"webServiceURL": "https://example.com/api/passes",
"authenticationToken": "my_secure_token",
"nfc": {
"message": "Tap to unlock door",
"encryptionPublicKey": "MY_ENCRYPTION_PUBLIC_KEY",
"payload": "encrypted_nfc_payload"
},
"organizationName": "My Company",
"description": "NFC-Enabled Access Pass",
"logoText": "My NFC Pass",
"foregroundColor": "rgb(255, 255, 255)",
"backgroundColor": "rgb(0, 0, 0)",
"barcode": {
"format": "PKBarcodeFormatQR",
"message": "https://example.com",
"messageEncoding": "iso-8859-1"
}
}
Questions:
Are there any additional steps or configurations required to ensure that NFC is enabled in the pass?
Is there a specific method to test or validate NFC functionality in the pass to debug why it’s not being activated?
Any guidance or solutions to enable NFC in this pass would be greatly appreciated.
Thank You
Topic:
App & System Services
SubTopic:
Core OS
Tags:
Wallet
iOS
Core NFC
Passkeys in iCloud Keychain
Under iOS 18.0.1, I can't do any development that uses HTTPS, because I can't authorize my generated certificates on my phone. This was not a problem in the past.
Normally you AirDrop a root certificate authority to your phone, install the "profile" for it, and then trust it in Settings / General / About / Certificate Trust Authority. Then you can connect to another server on your network that's using the accompanying certificates.
But after sucessfully installing two profiles on my phone, neither shows up in Certificate Trust Authority. Anybody else seeing this?
This problem, in combo with this one (which prevents running on my Mac as an iPad app) has completely halted my project.
I've found reports of this problem that blamed an empty "common name" field in the certs, but that field is populated in both of these.
I got a UIControl, and I want to make it behavior like a custom UIAccessibilityElement.
UIControl *control = [[UIControl alloc] init];
control.isAccessibilityElement = NO;
CustomAccessibilityElement *elem = [[CustomAccessibilityElement alloc] initWithAccessibilityContainer:control];
elem.isAccessibilityElement = YES;
// some custom setting here
control.accessibilityElements = @[elem];
It worked well with an iPhone 13, iOS 15.5.1, but crashed with an iPhone SE, iOS 15.4.1 and the crash msg is :
"-[UIAccessibilityElement _addAccessibilityElementsAndOrderedContainersWithOptions:toCollection:]: unrecognized selector sent to instance 0x283b7c680"
Can you tell me the reason ?
Thanks a lot.
Hi,
unfortunately I discovered that the following code:
.sheet(isPresented: $showSheetMapView) {
VStack(alignment: .leading, spacing: 10, content: {
SheetMapView(
isShowingAddressMap: $isShowingAddressMap,
showSheetMapView: $showSheetMapView,
isLoading: $isLoading,
filteredRegistrations: filteredRegistrations,
selectedTransporteurId: $selectedTransporteurId,
ComeFromRecipient: $ComeFromRecipient,
ComeFromRetour: $ComeFromRetour,
selectedDate: $selectedDate,
selectedQuantityXL: $selectedQuantityXL,
selectedQuantityL: $selectedQuantityL,
selectedQuantityM: $selectedQuantityM,
selectedQuantityS: $selectedQuantityS,
XLQuantityAdd: $XLQuantityAdd,
XLQuantityAdd2: $XLQuantityAdd2,
XLQuantityAdd3: $XLQuantityAdd3,
XLQuantityAdd4: $XLQuantityAdd4,
LQuantityAdd: $LQuantityAdd,
LQuantityAdd2: $LQuantityAdd2,
LQuantityAdd3: $LQuantityAdd3,
LQuantityAdd4: $LQuantityAdd4,
MQuantityAdd: $MQuantityAdd,
MQuantityAdd2: $MQuantityAdd2,
MQuantityAdd3: $MQuantityAdd3,
MQuantityAdd4: $MQuantityAdd4,
SQuantityAdd: $SQuantityAdd,
SQuantityAdd2: $SQuantityAdd2,
SQuantityAdd3: $SQuantityAdd3,
SQuantityAdd4: $SQuantityAdd4,
RecipientSelectedXL: $RecipientSelectedXL,
RecipientSelectedL: $RecipientSelectedL,
RecipientSelectedM: $RecipientSelectedM,
RecipientSelectedS: $RecipientSelectedS,
ComesfromAtoB: $ComesfromAtoB,
AtoBSelectedXL: $AtoBSelectedXL,
AtoBSelectedL: $AtoBSelectedL,
AtoBSelectedM: $AtoBSelectedM,
AtoBSelectedS: $AtoBSelectedS
)
.id(filteredRegistrations)
.overlay(
//Bezahl Button
VStack{
if !filteredRegistrations.isEmpty{
Spacer()
HStack {
ApplePayButton()
.frame(width: 350, height: 70)
.onTapGesture {
isLoading = true
AssignmentButtonTapped = true
if addressViewModel.selectedAddress != nil && selectedTransporteurId != nil && addressViewModel.isAddressValid == true {
// Zahlungsvorgang starten
if ComeFromRetour {
initiatePaymentRetour()
} else if ComeFromRecipient {
initiatePaymentForRecipient()
} else if ComesfromAtoB {
initiatePaymentForAtoB()
}
} else {
print("Fehler bei der Auswahl.")
isLoading = false
}
}
}
}
}
)
})
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top)
.presentationDetents([.medium])
.presentationCornerRadius(30)
.presentationDragIndicator(.hidden)
.presentationBackgroundInteraction(.enabled(upThrough: .medium))
.presentationBackground(.white)
.interactiveDismissDisabled()
}
is not displayed as it should be. simulating this on iOS 17.5 or under it is displayed fine. iOS 18 is ignoring .presentationDetents([.medium]). In every case it automatically change the sheet to .large. Why? it completely destroys the function of this view.
Please help me. Thank you.
When I was using Instruments to test the Display on my phone, I discovered a long-duration frame. Below that frame, there were some gaps in the vsync queue. As I understand it, vsync signals should appear consistently and steadily. How can this behavior be explained?
My phone is iPhone 15 Plus and iOS 18.
I am having difficulty figuring out two indicators for a custom piece of battery hardware.
Firstly, on the home screen, scrolling all the way to the left in the widget screen, you can see the battery for connected wireless devices, electronic pencils, etc.
Additionally, when you use Apple battery packs, you can see the battery for it on the top right of your phone
I am wondering where I should look to see how I could integrate both of these. I have searched the documentation for a while, and I am having a hard time knowing where to start. If anyone can point me to something, it would be very appreciated. Thank you!
I'm embedding PHPickerViewController in my application with a little bit of other chrome around it to provider context about how to upload.
But the fact that the controller has a translucent background to the videos when scrolling, and the rest of my UI doesn't, looks bad. Is there a way to customize the controller to either:
have the translucent background extend further than the extents of it, or
remove the translucent background entirely?
Hello there,
We are developing our own server for live caller ID service, and we have some questions for end-to-end testing:
According to the official documentation, it's said that the OS on user's iPhone will issue OHTTP request to 3rd party's gateway. Is it possible to verify this behavior at local environment, using physical device?
If answer to question 1. is no, will Apple provide other beta testing methods? For example via Testflight.
Any suggestion helps. Thanks!