Posts

Post not yet marked as solved
8 Replies
16k Views
Try to download profile for iOS 14 from beta.apple.com. Get message: Profile downloaded. Review the profile in Settings.app if you want to install it. My devices are iPhone 6s and iPhone SE (probably 1st generation, not sure) that, according to release information, should run iOS 14. My Settings - General page (on both devices) doesn't give 'Profile & Device Management' option. When I go to Settings - General - Software Update, I get iOS 13.5.1 Your software up to date without a prompt to upgrade.
Posted
by cyanide.
Last updated
.
Post not yet marked as solved
0 Replies
443 Views
The new iMovie doesn't seen to have an option "Share as App Preview", so I just exported it as a file and scaled to size 1080x1920 with avidemux (codec MPEG AVC, MP4v2 Muxer). Checking the format: codec H264, duration 29sec, 30fps — just as required for App Preview. Uploading to AppStoreConnect with Safari browser as App Preview for 5.5" iPhone, I get no complaints and even can see some frames while uploading. However, after the upload is complete, a cloud icon appears instead of the video. After I refresh the page, the cloud icon turns into exclamation mark(!). Also tried uploading 1920x1080 image for macOS — same result. Searched on the web — couldn't find any meaning of a cloud icon for App Preview video.
Posted
by cyanide.
Last updated
.
Post not yet marked as solved
1 Replies
4.7k Views
I installed a iOS 14.2 beta on my phone and have troubles accessing it from Xcode. Site https://github.com/filsv/iPhoneOSDeviceSupport does not host the files for iOS 14.2 When I duplicate iOS 14.0 to iOS 14.2, Xcode gives the message: "failed to prepare devices for developments", unpairing device causes Xcode to crash. I want to avoid installing a beta version of Xcode, as in the past I had troubles submitting my app to App Store with two Xcode's being installed. Please. upload iOS 14.2 support files to make them accessible without installing a beta Xcode version.
Posted
by cyanide.
Last updated
.
Post not yet marked as solved
0 Replies
292 Views
When in-app purchase is requested for an already purchased non-consumable item the StoreKit first asks to confirm a new purchase and only after that finds the purchase and offers the item for free. To avoid this confusion my applications first tried to restore the purchase and if not found prompted for a new purchase. This approach didn't get complaints neither from end users nor from the Apple review team ... until recently. When I submitted new releases of my apps, they were rejected by the review team who insisted that the app must have two buttons: one for Purchase, another for Restore. Both application are designed in a way that makes adding a button to startup page completely undesirable. To reach a consensus, I decided that 'Purchase' button instead of immediately starting the process, should bring up an additional dialog to select 'Purchase', 'Restore' or 'Cancel'. This effectively creates two separate buttons and splits a single purchase process into two separate processes. Guess what: the application was rejected again! I haven't got a chance to read the regulations (is there a way?), but have a strong feeling that the review team misunderstood them. To start with, I don't see a reason of having two separated buttons: it will be more logical to improve the StoreKit to avoid prompting for a purchase when it is already made. Secondly, I don't see why a separate dialog doesn't meet the regulations, given that it actually provides two separate buttons and splits the process. Hopefully this forum will clarify the issue.
Posted
by cyanide.
Last updated
.
Post not yet marked as solved
0 Replies
870 Views
I find convenient to use numeric keypad as arrows and never use it for entering digits. Until recently I used a third-party tool named Karabiner Elements, but since it stopped working with Big Sur, I am a looking for a way to achieve it without relying a third-party tool. Tried to remap Xcode (Preferences - Key Bindings - Selection), but it looks like Xcode doesn't differentiate between numeric keys on main keyboard and keypad, so after remapping it become impossible to enter a digit at all. There is an utility hidutls developed by Apple to remap the keys in the system, which will be ideal for me. I found an article on it https://developer.apple.com/library/archive/technotes/tn2450/_index.html which however isn't clear enough for me. Any help will will be highly regarded.
Posted
by cyanide.
Last updated
.
Post not yet marked as solved
0 Replies
320 Views
When App Store is out of reach, SKStoreProductViewController features 'RE-TRY', but no 'CLOSE' / 'CANCEL' button, or any other way to return to the app. The only available way to get out is brutally forcing the app to quit. As a matter of fact, quite often AppStore is unreachable from SKStoreProductViewController even if the corresponding page can be opened in Safari. Restarting the device re-establishes the access to the App Store.
Posted
by cyanide.
Last updated
.
Post not yet marked as solved
0 Replies
323 Views
The following code works well with MacOS 10.14 (Mojave) for a random peer, however doesn't work for an invited player (invitations don't arrive). With MacOS 10.15 (Catalina) it's vice versa: it works with invited players, however doesn't find a match for a random peer. In my case the 'random' peer is on iPhone running iOS 13. The MacOS and iOS apps are linked in the AppStore.Tried GKMatchmaker.shared() or local matchmaker. Tried recipients = nil and recepients = [] Whatever I do with Mac 10.15 behaves in same way: findMatch doesn't calls completion handler until I say gkMatchmaker.cancel(), after which the completion handler for findMatch is called with error -2.I've put breakpoints at the places marked /* BP */. OK means that the control gets there, Never - code is never reached.NetCommunicator and AgkPeerInvitationResponseProcessor are my own classes ('Agk' for Apple Game Kit) the meaning of which should be clear./* peer = nil. for a random peer */ func startMatchmaking(_ peer: GKPlayer?, _ responseProcessor: AgkPeerInvitationResponseProcessor?) { let request = GKMatchRequest(). /* BP. OK */ request.minPlayers = 2 // Including me request.maxPlayers = 2 // Including me request.defaultNumberOfPlayers = 2 if let peer = peer { request.recipients = [peer] } else { request.recipients = nil. // Tried also request.recipients = [] } request.recipientResponseHandler = { peer, response in /* BP Never */ guard let processor = responseProcessor else {return}. switch response { case .accepted: processor.agkInvitationAccepted(self, peer) break case .declined: processor.agkInvitationDeclined(self, peer) break default: let error = NetCommunicator.makeError(code: .PeerInvitationError, description: "\(response) (\(response.rawValue))") processor.agkInvitationError(self, peer, error) break; } } /* BP. OK */ let matchmaker = GKMatchmaker.shared(). // Tried also let matchmaker = GKMatchmaker(); self.matchmaker = matchmaker matchmaker.findMatch(for: request, withCompletionHandler: {match, error in /* BP: Only after GKMatchmaker.shared().cancel() or self.matchmaker.cancel() with error */ if let error = error { self.delegate?.sessionError(self, error) } else if let match = match { self.session = match match.delegate = self } }) }
Posted
by cyanide.
Last updated
.
Post not yet marked as solved
0 Replies
328 Views
My application, among other features, is going to support real-time multiplayer games using Apple GameKit.When the application starts, I want to avoid authentication, unless it is needed for playing a game.Is there a way to find out without authentication if the application was started as a result of accepting an invitation, or just from the desktop?
Posted
by cyanide.
Last updated
.
Post not yet marked as solved
0 Replies
354 Views
While creating achievements at Game Center, I made the total score equal to 1000 in hope I can later add new achievements.However now, when the achievements are live, I can't find a way to change score for existing achievements. This means that any new achievement must have score 0, resulting in the achievement table inconsistency, as a less important old achivements will have a better score that a new one.I agree that an existing achievement cannot be deleted or change its ID. But why changing the score is disallowed? It looks really illogical to me and, I guess, causes problems not only to me.
Posted
by cyanide.
Last updated
.
Post not yet marked as solved
0 Replies
362 Views
My MacOS application has one non-consumable in-app purchase.The application checks if the purchase already exists. If not, a new purchase is requested. An error message obtained from the StoreKit is displayed in an alert box.It works perfectly well in sandbox mode both for a new purchase and for restoring a purchase.However, when I submit the app for review, it is rejected. From the screenshot sent by review team I can read the error message: The operation could not be completed. (kCFErrorDomainCFNetwork error 310.)BTW, the iOS release of the app using the same class for in-app purchase, was approved without problems.
Posted
by cyanide.
Last updated
.
Post marked as solved
2 Replies
545 Views
When my app runs for the first time, it calls `SKPaymentQueue.restoreCompletedTransaction` to retrieve old purchases.The app is not yet submitted, and when I run it from XCode, it starts with explicit login to iTunes Store (asking to enter id and password)Will the app request explicit login when downloaded from AppStore, or it will log in automatically?
Posted
by cyanide.
Last updated
.
Post marked as solved
2 Replies
1.9k Views
I can't get GameController class working with my joystick. However I found a simple library https://github.com/suzukiplan/gamepad-osx using IOKit written is C, and got it working in swift command line app using the following code for main.swift:import Foundation func callback(_ type: Int32, _ page: Int32, _ usage: Int32, _ value: Int32) -> Void { print("Type: \(type); page: \(page), usage: \(usage), value: \(value)") } let ctx = gamepad_init(1, 1, 0) if ctx == nil { print("Init failed") exit(4) } gamepad_set_callback(ctx, callback(_:_:_:_:)) CFRunLoopRun() exit(0)Console messages: attched device: Controller attched device: 2.4G RX attched device: VirtualHIDKeyboard Type: 2; page: 7, usage: 227, value: 1 Type: 2; page: 7, usage: -1, value: 6 ....Since I am actually targeting MacOS app, I created a single-view Cocoa app with the following (very similar) code in Main View: import AppKit class MainView: NSView { required init?(coder decoder: NSCoder) { super.init(coder: decoder) print("Init started") let ctx = gamepad_init(1, 1, 0) if ctx == nil { print("Init failed") return } print("Init succeeded") gamepad_set_callback(ctx, callback(_:_:_:_:)) print("Callback attached") } } func callback(_ type: Int32, _ page: Int32, _ usage: Int32, _ value: Int32) -> Void { print("Type: \(type); page: \(page), usage: \(usage), value: \(value)") }The window appears, but console output has only that: Initialising started Initialising succeeded Callback attachedNo attachment messages, and quite obviously no callback from deviceAlso tried an running and additional thread (DispatchQueue) in Main view and in AppDelegate func applicationDidFinishLaunching(_ aNotification: Notification) { DispatchQueue(label: "Joy").async { print("Initialising started") let ctx = gamepad_init(1, 1, 0) if ctx == nil { print("Init failed") return } print("Initialising succeeded") gamepad_set_callback(ctx, callback(_:_:_:_:)) CFRunLoopRun() } }Again, no attachment messagesAny ideas?
Posted
by cyanide.
Last updated
.