Posts

Post not yet marked as solved
5 Replies
1.9k Views
Here's the scenario: 1) I had an app in App Store Connect. 2) I created an Advanced App Clip Experience for the app, using my website URL. 3) For technical reasons, I removed the app and created a new one. 4) For this new app, I tried to create an Advanced App Clip Experience using my website URL, but I get the error message "This URL is already registered as an App Clip Experience.". It seems that the system hasn't released the URL I registered for the first app, despite the app having been removed. Question: How can I register my URL for this new app? Thank you!
Posted
by JoeWest.
Last updated
.
Post not yet marked as solved
2 Replies
22k Views
I'm trying to monetize my app with MoPub for iOS 14, but my ad is not being shown and I get some errors that include Target is not running or required target entitlement is missing. According to MoPub Support, this is NOT a problem with MoPub -- it's a problem with my app configuration. However, the problem only occurs if the MoPub framework is added to the project. Here are the relevant logs: Initialized OM SDK version: 1.3.4-Mopub Attempting to load ad [assertion] Error acquiring assertion: Error Domain=RBSAssertionErrorDomain Code=3 "Target is not running or required target entitlement is missing" UserInfo={RBSAssertionAttribute=RBSDomainAttribute| domain:"com.apple.webkit" name:"Background" sourceEnvironment:"(null)", NSLocalizedFailureReason=Target is not running or required target entitlement is missing} [ProcessSuspension] 0x10b0b8bc0 - ProcessAssertion: Failed to acquire RBS Background assertion 'WebProcess Background Assertion' for process with PID 18829, error: Error Domain=RBSAssertionErrorDomain Code=3 "Target is not running or required target entitlement is missing" UserInfo={RBSAssertionAttribute=RBSDomainAttribute| domain:"com.apple.webkit" name:"Background" sourceEnvironment:"(null)", NSLocalizedFailureReason=Target is not running or required target entitlement is missing} SDK initialized and ready to display ads. Initialized adapters: No adapters initialized Could not signal service com.apple.WebKit.WebContent: 113: Could not find specified service Could not signal service com.apple.WebKit.Networking: 113: Could not find specified service I tried integrating the MoPub framework manually, and via cocoa pods -- with the same outcome. Question: What entitlement(s) do I need to add to my app, assuming that this is an entitlements issue? How do I fix these errors? Thank you! Edit: I tried adding the "Access WiFi Information" capability and also the "App Transport Security Settings" - "Allow Arbitrary Loads" .plist entry, to no avail.
Posted
by JoeWest.
Last updated
.
Post not yet marked as solved
2 Replies
629 Views
I have a game on the App Store, and a website that promotes the game. On the website, I'd like to indicate that the game is Game Center-capable. Question: Can I use the Game Center logo on my website for this purpose? I saw this and this, but they don't seem to answer my question. Maybe I'm missing something, though? To be specific: a small version of the logo would appear atop a description of the game. Thanks!
Posted
by JoeWest.
Last updated
.
Post not yet marked as solved
0 Replies
524 Views
I'm confused about whether or not to click "Submit For Review". Here's the situation: I submitted my app for review. My app entered review. My app was "Metadata Rejected" with the following guidance in the Resolution Center: "To help us proceed with the review of your app, please reply to this message providing the steps for locating the in-app purchases in your app . . . Since your App Store Connect status is Metadata Rejected, we do NOT require a new binary. To revise the metadata, visit App Store Connect to select your app and revise the desired metadata values. Once you’ve completed all changes, reply to this message in Resolution Center and we will continue the review." I replied to the message with the requested information. Now, when I navigate back to the "App Store" section of App Store Connect, the "Submit For Review" button is available instead of being disabled, and my information is editable. This makes me think that I might need to click it once again to restart the process, but I'm not sure. A red warning message saying "1 unresolved iOS issue" remains on the screen even after replying to the Resolution Center message. Question: Do I need to click "Submit For Review" again, or does my reply to the Resolution Center message restart the app review process? Thank you!
Posted
by JoeWest.
Last updated
.
Post not yet marked as solved
8 Replies
1.1k Views
These forums are a ghost town. Where is everyone? Where are the Apple engineers who should be monitoring/replying to our questions? One would think that Apple would have an interest in maintaining these forums -- after all, problems that don't get solved here may end up in their Support system. One would think they'd want to avoid that. It's very strange, in my opinion, for such a wealthy, successful company to basically ignore their own developer forums. Thanks for listening, lol.
Posted
by JoeWest.
Last updated
.
Post marked as solved
1 Replies
1k Views
I have a SpriteKit project in which I'm seeing the following error repeatedly printed to the logs when testing on a real device: Execution of the command buffer was aborted due to an error during execution. Insufficient Permission (to submit GPU work from background) This happens when the app is in the background state. Now, it's pretty obvious what's going on: SpriteKit uses Metal, and the latter is committing new work to the GPU when the app is backgrounded (which is something you can't do). I've confirmed this theory by not loading my SpriteKit scenes. If I don't load the scenes, the problem does not occur. This is a strange problem because, according to Apple's documentation - https://developer.apple.com/documentation/spritekit/skview/1519654-ispaused, SpriteKit is paused/resumed automatically when the app goes from/to the background: When an application moves from an active to an inactive state, isPaused is automatically set to true. When an application returns to an active state, isPaused is automatically set to its previous value. So, I would expect new work to stop being sent to the GPU. Question: How do I resolve this error?
Posted
by JoeWest.
Last updated
.
Post marked as solved
2 Replies
1.6k Views
I have a SwiftUI app with a widget. When I run the app via Xcode (either straight to my device or on the simulator), the widget works exactly as expected. However, when I run the app through TestFlight, the widget appears, but does not show any data. It shows an image, and "SCORE" and "LEVEL" text -- but not the actual score and level. I've seen some posts on Apple Developer forums about similar problems. One accepted answer says the following: Make sure that you use Xcode 12 beta 4 and iOS 14 beta 4 on your devices. Make sure that you have placeholder(in:) implemented. Make sure that you don't have placeholder(with:) because that's what the previous beta of Xcode was suggesting with autocompletion and without that you won't get your placeholder working. I think this whole problem is caused by the WidgetKit methods getting renamed but that's another story. As per the release notes, you need to set "Dead Code Stripping" to NO in your extension target's build settings. This is only necessary for the extension's target. When uploading your archive to the App Store Connect, uncheck "Include bitcode for iOS content". Delete your old build from a device when installing a new beta. I've implemented these suggestions, to no avail. Here's my code for the widget. It first fetches game data via CloudKit, then creates a timeline: import WidgetKit import SwiftUI import CloudKit struct WidgetCloudKit { static var gameLevel: Int = 0 static var gameScore: String = "" } struct Provider: TimelineProvider { private var container = CKContainer(identifier: "MyIdentifier") static var hasFetchedGameStatus: Bool = false func placeholder(in context: Context) - SimpleEntry { return SimpleEntry(date: Date(), gameLevel: 0, gameScore: "0") } func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) - ()) { let entry: SimpleEntry if context.isPreview && !Provider.hasFetchedGameStatus { entry = SimpleEntry(date: Date(), gameLevel: 0, gameScore: "0") } else { entry = SimpleEntry(date: Date(), gameLevel: WidgetCloudKit.gameLevel, gameScore: WidgetCloudKit.gameScore) } completion(entry) } func getTimeline(in context: Context, completion: @escaping (TimelineEntry) - ()) { let pred = NSPredicate(value: true) let sort = NSSortDescriptor(key: "creationDate", ascending: false) let q = CKQuery(recordType: "gameData", predicate: pred) q.sortDescriptors = [sort] let operation = CKQueryOperation(query: q) operation.desiredKeys = ["level", "score"] operation.resultsLimit = 1 operation.recordFetchedBlock = { record in DispatchQueue.main.async { WidgetCloudKit.gameLevel = record.value(forKey: "level") as? Int ?? 0 WidgetCloudKit.gameScore = String(record.value(forKey: "score") as? Int ?? 0) Provider.hasFetchedGameStatus = true var entries: [SimpleEntry] = [] let date = Date() let entry = SimpleEntry(date: date, gameLevel: WidgetCloudKit.gameLevel, gameScore: WidgetCloudKit.gameScore) entries.append(entry) let nextUpdateDate = Calendar.current.date(byAdding: .minute, value: 15, to: date)! let timeline = Timeline(entries: entries, policy: .after(nextUpdateDate)) completion(timeline) } } operation.queryCompletionBlock = { (cursor, error) in DispatchQueue.main.async { if let error = error { print("queryCompletion error: \(error)") } else { if let cursor = cursor { print("cursor: \(cursor)") } } } } self.container.publicCloudDatabase.add(operation) } } struct SimpleEntry: TimelineEntry { var date: Date var gameLevel: Int var gameScore: String } struct WidgetEntryView : View { var entry: Provider.Entry var body: some View { GeometryReader { geo in VStack { Image("widgetImage") .resizable() .aspectRatio(contentMode: .fit) .frame(width: geo.size.width) HStack { VStack { Text("LEVEL") Text(entry.gameLevel == 0 ? "-" : "\(entry.gameLevel)") } VStack { Text("SCORE") Text(entry.gameScore == "0" ? "-" : entry.gameScore) } } } .unredacted() } } } @main struct Widget: SwiftUI.Widget { let kind: String = "MyWidget" var body: some WidgetConfiguration { StaticConfiguration(kind: kind, provider: Provider()) { entry in WidgetEntryView(entry: entry) } .configurationDisplayName("Game Status") .description("Shows an overview of your game status") .supportedFamilies([.systemSmall]) } } Question: Why isn't my widget working when tested via TestFlight? What am I doing wrong? Thank you!
Posted
by JoeWest.
Last updated
.
Post not yet marked as solved
1 Replies
757 Views
Until now, I could view information about my App Clip (including domain status, size of App Clip, etc.) by doing the following: App Store Connect - TestFlight - iOS Builds - (Select the build) - Build Metadata However, the entire section on the App Clip has suddenly disappeared. It is missing from all my builds with App Clips. Is anyone else experiencing this issue, and how can I resolve it? Thank you!
Posted
by JoeWest.
Last updated
.
Post not yet marked as solved
0 Replies
993 Views
I have a project with an iOS 14 Widget extension. I would like to completely remove the extension so my app no longer has a widget. What steps do I need to perform to accomplish this task? Thank you!
Posted
by JoeWest.
Last updated
.
Post marked as solved
1 Replies
602 Views
Because my app is going to show advertisements, it's supposed to target users 13 years of age and older. So, I open App Store Connect and go to "Age Rating" - "Edit". I'm presented with a questionnaire that mentions all kinds of stuff -- violence, gambling, unrestricted web access, etc. In order to get my app's Age Rating to 13, I would have to select some of these categories. But my app will have none of that stuff, and I certainly wouldn't want any of those categories to be publicly visible if I did select them! Question: Is there an alternate method for setting an app's Age Rating, as it will appear on the App Store? Via Xcode maybe? Thank you!
Posted
by JoeWest.
Last updated
.
Post marked as solved
1 Replies
736 Views
According to the documentation, - https://developer.apple.com/documentation/safariservices/supporting_associated_domains I need to add a file to my website called apple-app-site-association without an extension in order to utilize App Clips: To add the associated domain file to your website, create a file named apple-app-site-association (without an extension). However, I can't seem to accomplish that. According to iPage support, it's not possible to have a file without an extension. Question: Is it truly necessary for this file to be without an extension, or is there an acceptable extension I can use? What would you recommend I do, here, since iPage says it's not possible? Thank you!
Posted
by JoeWest.
Last updated
.