Post not yet marked as solved
I'm an Apple developer but I'm currently trying to test someone else's app that uses StoreKit for in-app purchases. The app is being tested using TestFlight.
When I run the app, I always get a StoreKit error. On the screen, I see:
"App Store communication failure, please try later"
(with a close button to dismiss it)
In the app's console I see:
"StoreKit: Unable to Complete Request"
This happens with 3 different apps that the company is currently testing. No one else that is testing is getting this issue. StoreKit is working fine for them.
I suspect the problem has to do with the fact that I'm an Apple Developer as well. There must be something about my account that is tripping up StoreKit. I don't currently have any Sandbox test accounts. None of my apps are currently in testing.
Anyone have any thoughts?
I did capture a log from the Console App, filtering on StoreKit:
StoreKitFailure.txt
If you search the log for my email address "bill at otherwise dot com" you will see some errors that may mean something to someone.
Post not yet marked as solved
There is a field "Feedback Email" on the TestFlight and we are expecting to receive an email when a tester submits feedback.
Is there any configuration that I need to check to be able to receive emails when a tester submits feedback?
Post not yet marked as solved
My app has two static widgets. In the widget extension, I have the following code:
import WidgetKit
import SwiftUI
import ItemWidgetsKit
@main
struct ItemWidgetsBundle: WidgetBundle {
var body: some Widget {
RecentSavesWidget()
RecommendationsWidget()
}
}
the rest of the code, including the two Widget implementations, the TimelineProvider, etc, are in the imported ItemsWidgetKit, which is a library inside a Swift Package containing several libraries.
These two widgets work as expected.
Now I am adding a configurable widget, and the code above changes like so:
import WidgetKit
import SwiftUI
import ItemWidgetsKit
@main
struct ItemWidgetsBundle: WidgetBundle {
@WidgetBundleBuilder var body: some Widget {
makeWidgets()
}
func makeWidgets() -> some Widget {
if #available(iOS 17.0, *) {
return WidgetBundleBuilder.buildBlock(RecentSavesWidget(), TopicRecommendationsWidget())
} else {
return WidgetBundleBuilder.buildBlock(RecentSavesWidget(), RecommendationsWidget())
}
}
}
TopicRecommendationsWidget is similar to RecommendationsWidget except that it lets you choose a topic to display recommendations for, by long pressing and selecting an intent.
I followed the same approach of the other two widgets, and put the code inside ItemWidgetsKit
This time, though, the widget does not work, and it only loads the placeholder; in fact, in the AppIntentTimelineProvider implementation (see below) only placeholder(in:) gets ever called
@available(iOS 17.0, *)
public struct TopicTimelineProvider: AppIntentTimelineProvider {
public func placeholder(in context: Context) -> TopicEntry {
return TopicEntry(date: Date(), content: TopicContent.sampleContent)
}
public func snapshot(for configuration: TopicIntent, in context: Context) async -> TopicEntry {
return TopicEntry(date: Date(), content: configuration.topicEntity.topic)
}
public func timeline(for configuration: TopicIntent, in context: Context) async -> Timeline<TopicEntry> {
let entry = TopicEntry(date: Date(), content: configuration.topicEntity.topic)
return Timeline(entries: [entry], policy: .never)
}
}
for more context, here's the code for the configurable Widget implementation (that resides inside ItemWidgetsKit
@available(iOS 17.0, *)
public struct TopicRecommendationsWidget: Widget {
let kind: String
public init() {
self.kind = WidgetKind.topicRecommendations // a string stored elsewhere
}
public var body: some WidgetConfiguration {
AppIntentConfiguration(kind: kind, intent: TopicIntent.self, provider: TopicTimelineProvider()) { entry in
TopicWidgetContainerView(entry: entry)
}
.configurationDisplayName("New Recommendations")
.description("Select a Topic")
.supportedFamilies([.systemMedium, .systemLarge])
}
}
Any Idea why this happens and what would be the solution to this problem?
Thank you
Post not yet marked as solved
SwiftUI in visionOS has a modifier called preferredSurroundingsEffect that takes a SurroundingsEffect.
From what I can tell, there is only a single effect available: .systemDark.
ImmersiveSpace(id: "MyView") {
MyView()
.preferredSurroundingsEffect(.systemDark)
}
I'd like to create another effect to tint the color of passthrough video if possible.
Does anyone know how to create custom SurroundingsEffects?
Post not yet marked as solved
Hi,
We want to build an excellent app for Vision OS, just wonder are there any tangible support from Apple, liking a community or organization that help developers?
Thank you
Post not yet marked as solved
I have read several times
https://developer.apple.com/forums/thread/705868
https://developer.apple.com/forums/thread/705810
https://developer.apple.com/documentation/os/logging/generating_log_messages_from_your_code#3665948
From what I understand code like this:
import SwiftUI
import OSLog
struct ContentView: View {
private static let logger = Logger(subsystem: "HCP", category: "ContentView")
var myprivateData: Date { Date() }
var myprivateData2: String { "bank-account-111-222-333" }
let myprivateData3: String = "bank-account-111-222-333"
var body: some View {
VStack {
Image(systemName: "globe")
.imageScale(.large)
.foregroundStyle(.tint)
Text("Hello, world!")
}
.padding()
.onAppear(perform: {
Self.logger.info("test info")
Self.logger.info("test info \(myprivateData)")
Self.logger.info("test info \(myprivateData2)")
Self.logger.info("test info \(myprivateData3)")
Self.logger.info("test info")
Self.logger.info("test info \(myprivateData, privacy: .private)")
Self.logger.info("test info \(myprivateData2, privacy: .private)")
Self.logger.info("test info \(myprivateData3, privacy: .private)")
})
}
}
Should result in somewhat redacted log messages, so my expectation would be that dynamic strings
Self.logger.info("test info1")
Self.logger.info("test info2 \(myprivateData)")
Self.logger.info("test info3 \(myprivateData2)")
Self.logger.info("test info4 \(myprivateData3)")
would result in logs like:
info 21:29:07.877698+0200 TestOsLogger test info1
info 21:29:07.877757+0200 TestOsLogger test info2 <private>
info 21:29:07.877800+0200 TestOsLogger test info3 <private>
info 21:29:07.877835+0200 TestOsLogger test info4 <private>
instead I get
info 21:29:07.874356+0200 TestOsLogger test info1
info 21:29:07.877531+0200 TestOsLogger test info2 <private>
info 21:29:07.877615+0200 TestOsLogger test info3 bank-account-111-222-333
info 21:29:07.877656+0200 TestOsLogger test info4 bank-account-111-222-333
where clearly date object got redacted, but string not really.
Adding privacy: .private helps here, but it is still a different behavior from what I expected after reading docs.
Is that a change or rather my misunderstanding? Eskimo for the rescue?
Post not yet marked as solved
Attempting to run my app on the simulator or device seemingly leaves it stuck on the launch screen for a long time. Slowly, the terminal will start to relay info suggesting it's past that but still displays the launch screen until eventually it goes to a black screen. No changes I am aware of were made to cause these behavior to start. And it was a sudden issue. My last OS update was a few days ago and my last Xcode update was after this started to occur in hopes it would fix the problem. Recent code changes would have nothing to do with startup. I did try to delete derived data and ~/Library/Developer/Xcode/iOS DeviceSupport/ based on solutions given to other users with similar problems. I've restarted the computer and cold restarted. When I stop the application from Xcode, I can then run the app. It's just when it's attached. It will also work if "Debug executable" is off. Other apps on this computer do not seem to have this problem. Would appreciate any help. Thanks.
Post not yet marked as solved
I work on an app that uses a couple 3P SDKs that have their own SDK. My app also uses some of the APIs (UserDefaults) and declares those reasons in it's privacy manifest file.
I was under the impression that I should only declare the reasons from my app in it's Privacy Manifest file, and that the 3P SDK reasons would automatically be pulled in (because they include them).
Uploading to TestFlight I get warnings that this is not the case. If I only declare my app's reasons, it warns me that the APIs the SDK accesses are not included in the manifest.
The only way to get it to work, is manually copying in the same declarations that the 3P SDK has into my own manifest file. Is this the way it's supposed to work? Or should it be generating a holistic manifest automatically for me?
Post not yet marked as solved
Hi,
I'm trying to Developer ID-sign and export a macOS app through my CI/CD pipeline on GitHub Actions, but I've run into an issue signing my app once it has one or more entitlements, in this case, an app group entitlement.
I'm using xcodebuild to archive the app and export that archive, signing it along the way. This works fine as long as my app does not have an entitlement, but once it has an entitlement, exporting the archive fails.
To elaborate a bit on this, I first make sure the development certificate and the Developer ID certificate are installed on the machine. These are installed using the security CLI, and I'm confident that they are installed correctly. Then I proceed to archive the app using xcodebuild as shown below.
xcodebuild archive\
-scheme MyApp\
-configuration Release\
-sdk macosx\
-archivePath MyApp.xcarchive\
-destination "platform=OS X,arch=x86_64"\
-allowProvisioningUpdates\
-authenticationKeyIssuerID XYZ1234\
-authenticationKeyID XYZ\
-authenticationKeyPath AuthKey.p8
Then I export the archive using xcodebuild as shown below.
xcodebuild -exportArchive\
-archivePath MyApp.xcarchive\
-exportPath export\
-exportOptionsPlist ExportOptions.plist\
-allowProvisioningUpdates\
-authenticationKeyIssuerID XYZ1234\
-authenticationKeyID XYZ\
-authenticationKeyPath AuthKey.p8
When my app has one or more entitlements, this fails with the following error message:
Error: error: exportArchive: Cloud signing permission error
Error: error: exportArchive: No profiles for 'com.example.MyApp' were found
Note that I am not signed into an Apple ID in Xcode when signing and exporting my app through my CI/CD pipeline, as there does not seem to be a way to sign into an Apple ID in Xcode through the CLI. Instead, I'm authenticating with an App Store Connect API key.
Developer ID-signing and exporting my app does work when I do it through Xcode, even if the app has an entitlement, so the signing of the app is configured correctly.
Upon inspecting the contents of ~/Library/MobileDevice/Provisioning Profiles after signing and exporting the app through Xcode, I notice that Xcode automatically creates two provisioning profiles with the titles:
Mac Team Provisioning Profile: com.example.MyApp
Mac Team Direct Provisioning Profile: com.example.MyApp
These two provisioning profiles are not created when signing and exporting the app through the xcodebuild command-line tool, and I suspect that is part of the problem.
I'd be OK with manually creating these provisioning profiles through Apple's developer portal and installing them as part of my CI/CD pipeline, but I can't seem to find a way to create this type of provisioning profile through the portal. Neither the macOS App Development, Mac App Store Connect, nor Developer ID provisioning profile types yield this kind of provisioning profile.
All of this, leaves me with the question:
How do I Developer ID-sign and export a macOS app with an entitlement through the command-line without being signed in with my Apple ID in Xcode?
Post not yet marked as solved
I am installing the 14.5 beta2 update last night (however this has happened on non beta releases too) and I wake up with his morning to see the login screen. I enter my password and the update screen is “paused” with 6 minutes to go and then immediately begins completing. I’ve noticed this happening in the past as well and disregarded it. This can’t be normal during an update for the login screen to appear and stop installations.
I was forced to post this in the beta forum by Apple..
"We removed your post “Screen locking while updating macOS - stopping update because it contained information about beta software. "
Post not yet marked as solved
I'm currently befuddled by the entire signing and certificate process. I don't understand what I need, what the team admin needs to do, or how to go about doing it so that I can build the project.
We've managed to have this working in the past but I guess the system has changed somewhat. Here's what we have going:
A Unity project which hasn't changed from a few years ago. I build the project in unity, open the Xcode project and this:
There's an issue with the Signing and Capabilities.
If I choose automatic setup it shows an error saying that it requires a development team. I had the account admin add my Apple ID to the team so I'm not sure why that's an issue still. Do I need to pay the 99$ to be able to building Xcode?
If I try to do it manually I select the provisioning profile that the account admin sent me and it auto selects the team associated with the provisioning profile I guess but then there's no singing certificate. The error says:
There is no signing certificate "iOS Development" found. No "iOS Development" signing certificate matching team ID "V7D5YBZRMV" with a private key was found.
So, if someone could explain to me like I'm 5 the entire signing and certificate process is and let me know what we're doing wrong with the team/provisioning profile/certificate setup I would be very much appreciative.
I'm on my final steps 'polishing' my app before submitting to AppStore however there is something that bothers me. My Feedback section is somehow asking for the User's data in order to submit a Feedback. Do i need to include some sort of Privacy Policy for this? The app is working offline and is for educational purposes teaching users
the basics of Swift in an interactive way. ... it doesn't require any sensitive information from the user apart from this form...Feedback is critical, any suggestion?
Not impressed. Jk.
My app has only received around 500 impression over 4 or 5 days. How can I fix that?
Post not yet marked as solved
Hi,
In Windows and Linux, it's possible to ask a printer to print content programmatically in Black & White. This may be referred to as "Monochrome", "Grayscale", "B&W", depending on the device driver.
For feature parity with other operating systems, I'd like to do the same -- programmatically -- in macOS using Objective-C or Swift. Is this possible? If not, what's the best, formal way to request this useful OS feature to Apple so that it may be added in a future release?
More context about this request:
https://github.com/openjdk/jdk/pull/18195
Post not yet marked as solved
While setting up our premium video-on-demand workflow in AWS, using AWS MediaConvert and MediaPackager and licence delivery from drmToday we encountered an issue with HLS+FairPlay playback (only) in Safari on macOS. The issue is that sometimes (more than 50% on the same video) the videoplayer initialization fails (with simple event of type=”error” in onerror callback).
We are using Shaka player in our web application, so we first assumed that this (random) issue could be due to Shaka. However, we also tested with direct playback via the player and we observed the same issue, with same frequency. Since we have some content for which this problem does not occur and other content when the problem occurs very frequently, we tried to understand what could explain this difference. We noticed that for assets where the problem never occurs the order of the video submanifest was increasing, whereas for assets where the problem occurs frequently the order is decreasing.
To isolate the issue we created a standalone page for a 2-minute asset and we are able to demonstrate that on this asset, when the bitrates are in decreasing order the playback with Safari on macOS fails more than 50% of the time.
Test page using tag:
KO: https://ntg-test-public-scr.s3.eu-west-1.amazonaws.com/aws-video.html
OK: https://ntg-test-public-scr.s3.eu-west-1.amazonaws.com/aws-video.html?ok=1
Test page using Shaka:
KO: https://ntg-test-public-scr.s3.eu-west-1.amazonaws.com/aws-shaka.html
OK: https://ntg-test-public-scr.s3.eu-west-1.amazonaws.com/aws-shaka.html?ok=1
Notes:
the issue is only reproducible with Safari on macOS (not with Safari on iOS)
same HLS content + FairPlay plays OK 100% on tvOS
the issue is only reproducible for HLS content with FairPlay (OK if no DRM)
Post not yet marked as solved
We are running a Xamarin/Maui iOS app. The syntax I post will be different from Swift or other languages, but the underlying logic and issues should be the same. Since our app is only for employees, we do not want it on the app store. Until now, we've used Microsoft's AppCenter to distribute our app. AppCenter is being retired.
We are trying to follow the "Distribute proprietary in-house apps to Apple devices" guide at https://support.apple.com/guide/deployment/distribute-proprietary-in-house-apps-depce7cefc4d/web. This is working well so far from a web page for installs, but we want our app itself to prompt users to upgrade.
We can call
await Launcher.OpenAsync(url)
with the manifest to install upgrades, however this gives users the option to cancel. If a user cancels, we do not want them to be able to use the old version. My understanding is Apple recommends against apps exiting themselves, which has been a problem for us in other situations users should not be able to continue as well. Providing a page explaining they cannot continue unless they upgrade, or giving them the option to try again is acceptable; however I cannot figure out any way to hook into the event for this dialog to bring this page up at the correct time.
If we go against Apple's advice and close the app, calling Thread.CurrentThread.Abort() immediately after await Launcher.OpenAsync(url) seems to work, both for users who continue and users who cancel. I am wondering if anyone has an alternative - we cannot be the only one distributing an in-house app that upgrades itself.
Post not yet marked as solved
Hello everyone,
I'm programming my app and after a few days I opened and ran it on my iPhone. This app worked, but with one big problem. The problem is that the app doesn't show up in my settings and I don't know why. I didn't program/change anything.
Thanks for the advice
Hi,
I was initially stuck with the issues described in thread 749821 between Sonoma 14.4.1, XCode 15.3, iOS 17.4.1 and watchOS 10.4.
=> Unable to deploy the watch app from Xcode
Yesterday when I saw the availability of XCode 15.4 beta, I decided to give it a shot.
This was a bad idea: now I can not even connect the iPhone anymore.
When running with XCode 15.4 beta:
The developer disk image could not be mounted on this device.. Error mounting image: 0xe8000105 (kAMDMobileImageMounterTATSUDeclinedAuthorization: The server declined to authorize this image on this device for this user.)
After reverting toe XCode 15.3, I have a similar issue:
Unable to locate a developer disk image that can be used to enable DDI services..
_synchronousInvoke(passing:context:continuingUsing:): Failed to find a DDI that can be used to enable DDI services on the device. Usually this means the best DDI we could find for a platform did not have compatible CoreDevice content.
Failed to enable developer disk image services for assertion 7AB063A7-1F6F-4558-AEE6-7A4A00706E68. Error: <private>
I tried the following:
Unpair / Repair the iPhone
Disable Wifi
Reinstall the iPhone and the Watch
Reinstalled XCode several times
I also double checked that the DDI images are correct:
For XCode 15.3:
shasum ~/Library/Developer/DeveloperDiskImages/iOS_DDI.dmg
b75a90c64a0ece8f02ca3f4437208366e4884a6b
For XCode 15.4 beta the sha is 287c2f83d888fc085fb6cef2328a6e46dd027399
Questions:
What can I do to diagnose further and fix this issue?
Where can I get more detailed logs than what I can see in the Console related to the DDI images (like the log visible in this thread)
Thanks
Tiry
Post not yet marked as solved
I'm not sure if I just missed a recent breaking change, but we are having an issue with the camera in our single page app on iOS 17.4.1 in Safari. We can open the camera and display it to the user using getUserMedia. However, if the path of the site changes at all (for example, the user clicks a button to opens a sidepanel which results in the path in the browser changing) the camera goes black, even if the video element is still being displayed.
I can see in the browser that the camera has stopped, and the user has to re-enable it manually by tapping "Start Using Camera".
Any idea's what could be going on here?
Post not yet marked as solved
I want to get the network-name (domain-name) on my Mac-Machine. Where iin the Settings does this domain name gets configured. I refer to this page which talks about computer name and host name, I could find where my hostname is present (Settings->General->Sharing->local host name) but not anything related to the network-name (local -domain) .
Even try to fetch this info using the linux api to getdomainname, api call succeeded but it returns Nothing.
#include <iostream>
#include <unistd.h>
#include <limits.h>
#include <cstring>
int main() {
char domainname[255];
// Get the domain name
if (getdomainname(domainname, 255) != 0) {
std::cout << "Error getting domain name" << std::endl;
return 1;
}
std::cout << "Domain name: " << domainname << std::endl;
return 0;
}
Output
Domain name:
I even came across Search-Domains, Does it have anything to do with the network-name (domain name of the machine)?