Posts

Sort by:
Post not yet marked as solved
0 Replies
2 Views
Hi all, I work on a macOS app that's actually split into two apps: one primary app and one "helper" app that lives in the menubar and runs in the background when the primary app is quit. Recently, I've been integrating TipKit into these apps, and I'd like to have one unified TipKit database shared between them. I set up TipKit in both apps' AppDelegate classes with the datastoreLocation set to the apps' shared Group Containers folder. I've verified with a SQLite DB viewer that both apps can store event donations and parameters as well as tip status in that shared database. However, updates to the TipKit database are not being propagated between the two apps. For example, I have a TipKit event that only the "helper" app donates to, and I use that event for a TipKit rule in a Tip displayed in the primary app, but the tip only displays after I restart the primary app instead of immediately once the rule requirements are met (I've verified that the helper is properly making donations to that event). Unfortunately, combining both apps into one app is out of the question (in the near term, anyways). Is there anything I'm missing here to get cross-app TipKit communication to work? Here's the relevant code (truncated and with variable and class names altered for IP reasons): TipKitConstants.swift (accessible by both apps in a shared framework) import TipKit // MARK: - DataStore @available(macOS 14.0, *) extension Tips.ConfigurationOption.DatastoreLocation { public static let sharedGroupContainer = Tips.ConfigurationOption.DatastoreLocation.url(NSURL.sharedGroupContainer()) // This NSURL extension points to a location in group containers that both apps can write to } // MARK: - Events @available (macOS 14, *) public struct TipKitEvents { ... public static let helperEvent = Tips.Event(id: "helperEvent") ... } ... PrimaryAppDelegate+TipKit.swift (app delegate is in obj-c, hence the extension) import TipKit extension PrimaryAppDelegate { @objc func setupTips() { if #available(macOS 14, *) { ... try? Tips.configure([ .displayFrequency(.immediate), .datastoreLocation(.sharedGroupContainer) ]) } } } HelperAppDelegate+TipKit.swift (app delegate is in obj-c, hence the extension) extension HelperAppDelegate { @objc func setupTips() { if #available(macOS 14, *) { try? Tips.configure([ .displayFrequency(.immediate), .datastoreLocation(.sharedGroupContainer) ]) } } } HelperClass+TipKit.swift (this is the class where the event donation happens) import CommonFramework extension HelperClass { @objc func donateHelperEvent() { if #available(macOS 14, *) { Task(priority: .background) { await TipKitEvents.helperEvent.donate() } } } ... } ExampleTip.swift (exists in the primary app) @available(macOS 14, *) struct ExampleTip: Tip { ... // All Tip protocol requirements are implemented above var rules: [Rule] { [#Rule(TipKitEvents.helperEvent) { $0.donations.count >= 3 }] } ... } PrimaryAppWindowController.h @interface EditorWindowController : NSWindowController ... // TipKit types are not representable in Objective-C, hence all the "id" types here @property id templateCreationTip; @property id templateCreationTipObservationTask; @property id templateCreationTipPopover; ... PrimaryAppWindowController.m @implementation PrimaryAppWindowController ... - (void)windowDidLoad { [self setUpTips]; } ... PrimaryAppWindowController+TipKit.swift @available(macOS 14, *) extension PrimaryAppWindowController { @objc func setUpTips() { if exampleTip == nil { exampleTip = ExampleTip() } exampleTipObservationTask = exampleTipObservationTask ?? Task { @MainActor in if let tip = exampleTip as? ExampleTip { for await shouldDisplay in tip.shouldDisplayUpdates { if shouldDisplay { showExampleTip() } else { (exampleTipPopover as? TipNSPopover)?.close() exampleTipPopover = nil } } } } } @objc func showExampleTip() { guard let exampleTip = exampleTip as? ExampleTip, let buttonView = window?.toolbar?.items.filter({ $0.itemIdentifier.rawValue == ItemIdentifier.button }).first?.view else { return } exampleTipPopover = TipNSPopover(exampleTip) (exampleTipPopover as? TipNSPopover)?.show(relativeTo: buttonView.bounds, of: buttonView, preferredEdge: .maxY) ... } }
Posted
by
Post not yet marked as solved
0 Replies
17 Views
It seems that all macOS apps currently going through App Review which use ASWebAuthenticationSession (or SwiftUI webAuthenticationSession) are being rejected, because: Reason given: Guideline 4.0 - Design The user is taken to the default web browser to sign in or register for an account, which provides a poor user experience. See here for more details: https://forums.developer.apple.com/forums/thread/750400 If webAuthenticationSession is no longer permitted for production apps, what is the current recommended approach for implementing OAuth 2 authentication?
Posted
by
Post not yet marked as solved
0 Replies
9 Views
Lately, I keep getting this warning when closing Xcode asking if I want to save the changes. Strangely enough, I have never received this before. I looked to see if I could disable and enable autosave. Unfortunately I have not found anything. Does anyone have any tips?
Posted
by
Post not yet marked as solved
0 Replies
2 Views
I currently have an app listed in the App Store under my company's name. Recently, we restructured our company and adopted a new name that better reflects our product. My question is: Can I update our company name and DUN (Data Universal Numbering) number in the App Store, or do I need to create a new account for our restructured company? Alternatively, should I submit the updated version of the app under the original company name and DUN number?
Posted
by
Post not yet marked as solved
0 Replies
4 Views
Older version of xcode 14.3.1 is uploading build with notice to update xcode version but newer version of xcode 15.3.1 and beta giving the error below. Please correct the following issues and upload a new binary to App Store Connect. ITMS-90338: Non-public API usage - The app references non-public symbols in Frameworks/Shared.framework/Shared: _SSL_CTX_free, _SSL_CTX_new, _SSL_CTX_set_alpn_protos, _SSL_CTX_set_options, _SSL_do_handshake, _SSL_free, _SSL_get0_alpn_selected, _SSL_get_error, _SSL_get_session, _SSL_new, _SSL_read, _SSL_set_alpn_protos, _SSL_set_bio, _SSL_set_connect_state, _SSL_write. If method names in your source code match the private Apple APIs listed above, altering your method names will help prevent this app from being flagged in future submissions. In addition, note that one or more of the above APIs may be located in a static library that was included with your app. If so, they must be removed. For further information, visit the Technical Support Information at http://developer.apple.com/support/technical/ Apple Developer Relations
Posted
by
Post not yet marked as solved
0 Replies
3 Views
{"app_name":"Lama","timestamp":"2024-04-24 17:53:43.00 +0800","app_version":"3.4.2","slice_uuid":"e6cfc88e-7676-3714-8064-92cf92277f05","adam_id":0,"build_version":"126","platform":0,"bundleID":"love.wenext.lama","share_with_app_devs":0,"is_first_party":0,"bug_type":"109","os_version":"iPhone OS 14.8.1 (18H107)","incident_id":"6D0C72BF-1838-4DBD-888F-18B7BD1FD905","name":"Lama"} Incident Identifier: 6D0C72BF-1838-4DBD-888F-18B7BD1FD905 CrashReporter Key: 3324822a0132dd746e7f222aa15b4e29af10d61f Hardware Model: iPhone10,1 Process: Lama [17804] Path: /private/var/containers/Bundle/Application/4866DEE0-0897-411C-B0BA-7F4634AB86B9/Lama.app/Lama Identifier: love.wenext.lama Version: 126 (3.4.2) Code Type: ARM-64 (Native) Role: Foreground Parent Process: launchd [1] Coalition: love.wenext.lama [393] Date/Time: 2024-04-24 17:53:42.8357 +0800 Launch Time: 2024-04-24 17:53:42.1537 +0800 OS Version: iPhone OS 14.8.1 (18H107) Release Type: User Baseband Version: 6.71.01 Report Version: 104 Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Subtype: KERN_INVALID_ADDRESS at 0x8010000105ab861b Termination Signal: Segmentation fault: 11 Termination Reason: Namespace SIGNAL, Code 0xb Terminating Process: exc handler [17804] Highlighted by Thread: 0 Backtrace not available Unknown thread crashed with ARM Thread State (64-bit): x0: 0x0000000105ab8000 x1: 0x0000000000000008 x2: 0x000000016b6756ef x3: 0x0000000000000000 x4: 0x0000000000000000 x5: 0x0000000000000000 x6: 0x7473696c7373616c x7: 0x0000000000000bc0 x8: 0x000000016b6757c0 x9: 0x000000016b675778 x10: 0x00000001057860b8 x11: 0x000000000000000b x12: 0x0000000000ff0006 x13: 0x0000000000007810 x14: 0x0000000000000003 x15: 0x000000016b676150 x16: 0x000000011788c3a8 x17: 0xbd656ebe86d736b6 x18: 0x0000000000000000 x19: 0x000000016b675890 x20: 0x0000000121b90238 x21: 0x8010000000000623 x22: 0x801000000000063b x23: 0x000000016b676000 x24: 0x8010000105ab861b x25: 0x000000016b6757e8 x26: 0x000000016b696878 x27: 0x000000016b6762d0 x28: 0x000000010578c1bc fp: 0x000000016b675840 lr: 0x000000010574a5c0 sp: 0x000000016b6757c0 pc: 0x000000010574a5f0 cpsr: 0x60000000 esr: 0x00000000 Address size fault Binary images description not available Error Formulating Crash Report: Failed to create CSSymbolicatorRef - corpse still valid ¯_(ツ)_/¯ EOF
Posted
by
Post not yet marked as solved
0 Replies
4 Views
Hello Everyone, I am having a problem here with my app. I developed a timer that play a sound .mp3 and the sound play every time that the timer start and finish. Everything works very well in the simulator but not on the devices after I distribute the build and install using the testflight. I saw the build content and the file is inside. However, I have no idea what I am doing wrong (if it is some option that i forgot to check or some problem in my code). Please, somebody can help me? Here is the func with the path. (I inserted the sound on the root) in the same place that we can find the Contentview. func playFinishSound() { guard let url = Bundle.main.url(forResource: "finish_sound", withExtension: "mp3") else { return } do { player = try AVAudioPlayer(contentsOf: url) player?.play() } catch { print("Error playing finish sound") } } } Thank you very much for your help. I appreciate. Antonio
Posted
by
Post not yet marked as solved
0 Replies
19 Views
There is an inconsistent issue when views are rendered from the Device Activity Report Extension. This issue is noticeable only on release versions and it works fine in debug mode. Around 80% of the times, the Report Views return blank screen and this is only the case when a weekly/monthly filter is used. Although, it works as expected for daily report views. My questions are: How are all the Report Activity Views working fine in debug mode but not in release mode? How the daily activity filter works fine in the release mode but the weekly/monthly filters don't work? Is this because of a memory limit issue in the extension? As of now, I have the family-controls(distribution) entitlement only for the app and for the extensions I only have family-controls(development) entitlement. Do I need to request for family-controls(Distribution) entitlement even for the extensions? I have seen threads on the forum mentioning the blank screen issue associated with the DeviceActivityReport but haven't found a solution to it. Any suggestions/feedback would be of great help, thanks.
Posted
by
Post not yet marked as solved
0 Replies
3 Views
My ".navigationTitle" is on my physical iPhone 14 and Simulator iPhone 15 not displayed, on Xcode Preview Screen is it displayed perfect. Why is it and what can i do that is displayed on my iPhone 14.
Posted
by
Post not yet marked as solved
0 Replies
5 Views
Hello everyone! In our application, we have login via phone number (with an SMS code as a password) and the ability to add a bank card to Apple Wallet. When logging in via phone number, upon receiving the SMS code, it automatically suggests filling in the input field. However, the field itself is not of type .oneTimePassword, and the SMS does not contain @domain, #code at the end (please look at the screenshot). So, when adding a card to Apple Wallet, PKAddPaymentPassViewController is launched, where entering the code from the SMS is also required to activate the card. However, no autocomplete prompt for the SMS password appears when displaying this field. Does anyone have information on why this is happening and how it can be implemented?
Posted
by
Post not yet marked as solved
0 Replies
10 Views
SwiftUI's PhotoPicker doesn't fit into the screen when I place it on a popover and click on it to select a photo. The relevant code I use: .popover( isPresented: $showAttachments ) { VStack(alignment: .leading, spacing: 20) { // ... PhotosPicker(selection: $photos) { HStack { Image(systemName: "photo") Text("Media") } } } } It seems like the photo picker is positioned relative to the popover position and I can't find any configuration options regarding to its' positioning. How to position the PhotoPicker correctly?
Posted
by
Post not yet marked as solved
0 Replies
3 Views
according to: https://developer.apple.com/documentation/appintents/appintent one should be able to create an optional parameter to a shortcut with "@OptionalParameter". But it seems that macro doesn't exist anywhere outside of that 1 web page. Is it not implemented?
Posted
by
Post not yet marked as solved
0 Replies
8 Views
I sent my application for review, but the application status appears to be waiting for review for a month. Apple does not provide any feedback. I sent an e-mail and requested support 4 times and they never responded. What do I need to do to publish my application or are Apple officials not working for a month?
Posted
by
Post not yet marked as solved
0 Replies
76 Views
SMAppService.statusForLegacyPlist() stops working in macOS Sonoma 14.5 beta. It always returns .notFound even if the service is installed, runs and the main app is able to connect it through XPC. It used to work fine before. The service LaunchDaemons plist contains the following keys: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>AssociatedBundleIdentifiers</key> <string>xxxx</string> <key>KeepAlive</key> <true/> <key>Label</key> <string>xxxx.helper</string> <key>MachServices</key> <dict> <key>xxxx.helper.xpc</key> <true/> <key>xxxx.helper.xpcgate</key> <true/> </dict> <key>ProgramArguments</key> <array> <string>/Library/Application Support/yyyy/xxxx/zzzz/xxxx.helper</string> </array> </dict> </plist> Is this a bug in the beta version of Mac OS or a deliberate change that requires some kind of response from our side? Thanks in advance, Aleksandr Skobelev
Posted
by
Post not yet marked as solved
0 Replies
27 Views
i'm struct dynamic island detail content dynamicIsland: { context in DynamicIsland { expandedContent(context: context) } compactLeading: { .... } compactTrailing: { ... } i want show different content based on context. private func expandedContent(context: ActivityViewContext<xxxx>)->DynamicIslandExpandedContent<some View> { if (context.state.style == 0) { return expandedControlContent1(context: context) } else if (context.state.style == 1) { return expandedControlContent2(context: context) } else { return expandedControlContent3(context: context) } } compiles error Function declares an opaque return type 'some View', but the return statements in its body do not have matching underlying types
Posted
by
Post not yet marked as solved
0 Replies
5 Views
Hi, I am using xctrace to launch an app and check if the app launched successfully or crashed by reading the content of the .trace file. However if multiple devices are connected , xctrace complain No devices found matching the identifier specified. Please let me know if there is any limitations for the device to be connected.
Posted
by

TestFlight Public Links

Get Started

Pinned Posts

Categories

See all