Post

Replies

Boosts

Views

Activity

Volume purchasing with In-app purchases
Hi, My app is free-to-download but with an in-app purchase to unlock all the features. A user wants to buy 15 copies of the "unlock" IAP and distribute it to his team, using MDM to distribute it easily. I don't believe there is a way to do this through business purchases, is that right? You can only download apps through MDM but not in-app purchases. So what's the best way to do this? Are there any standard solutions? Can I upload a new version of the app that's "paid up-front" but not available through the regular App Store, but only through MDM?
2
0
5k
May ’22
MailKit: access rawData for email
Hi, I am trying to build a Mail 'action' extension, and want to access the email body and parse it for specific content. Not sure how to go about converting the 'rawData' that comes in the MEMessage into something that I can read. Here's how I access the rawData property: func decideAction(for message: MEMessage, completionHandler: @escaping (MEMessageActionDecision?) -> Void) { var action: MEMessageActionDecision? = nil      if let messageData =  message.rawData {          print("messageData = \(messageData)") // what to do here??      } else {          action = MEMessageActionDecision.invokeAgainWithBody      } return action } The documentation just says this is 'unprocessed data': The content is available after MailKit downloads the message. MailKit provides the content as unprocessed data. For details about the format of the data, see RFC 2822. But I'm not sure what I'm supposed to do to go about converting the unprocessed 'data' into something that is accessible and useful to my app. Let me know if you have any thoughts or recommendations
2
0
1.7k
Apr ’22
StoreKit2: does Transaction.all include paid apps?
Hi, I have a paid app available through the Mac App Store, and when the user opens the app, I want to verify that the transaction of the payment is valid. I would have assumed that in StoreKit2, the 'Transaction.all' would work, but when I tested this, it shows 0 transactions for all users. This is what I'm testing: for await result in Transaction.all { guard case .verified(let transaction) = result else { continue } print("verified product = \(transaction.productID)") // send to analytics } But nothing gets observed in the analytics. Does the StoreKit2 framework have an easy way to determine transactions that are made for paid-up-front apps?
1
0
1.1k
Mar ’22
NSApplication's openURLs delegate method not getting called
Hi, I am trying to invoke this NSApplicationDelegate callback from my Mac app, but it's not getting called: - (void)application:(NSApplication *)application openURLs:(NSArray<NSURL *> *)urls I have registered the URL scheme in my Info.plist: <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLName</key> <string>com.my.testapp</string> <key>CFBundleURLSchemes</key> <array> <string>mytestapp</string> </array> </dict> </array> Now I use a 2nd Mac app to test this out, by invoking the following code: if let url = URL(string: "mytestapp://") {             NSWorkspace.shared.open(url)         } This causes my first app to come to the foreground, and the "applicationDidBecomeActive:(NSNotification *)notification" method gets called, but the "application:(NSApplication *)application openURLs:(NSArray<NSURL *> *)urls" method mentioned above doesn't get invoked, which is what I want. Any ideas about why that might be the case?
1
0
1.5k
Mar ’22
Detecting Link tap inside WidgetKit
Hi, I am working on a widget for my existing Mac app. The problem I am running into is that when I add a Link from the widget to the main app, the method 'openURLs' isn't called at all: - (void) application: (NSApplication *)application openURLs:(NSArray<NSURL *> *)urls  So I'm not able to direct the app on how to best handle the widget tap. I'm trying to work around that by trying to detect if a Link was selected. Something like this could work Link("Test", destination: URL(string: "https://duckduckgo.com")!) .environment(\.openURL, OpenURLAction { url in print("---> testing link actioned") return .systemAction }) When I add this to the main app, it works fine. But when I add something like this to the widget, the completion handler isn't called (supposedly). Can someone confirm if this was supposed to work inside a widget? Or is it only something that works from the main app?
0
0
709
Mar ’22
StoreKit2 to validate purchase of paid-app
Hi, I have a paid app in the Mac App Store, and I want to verify that the user purchased the app legitimately. Does the StoreKit2 framework have an easy way to determine this? From the documentation I've seen, I believe the 'Transaction.currentEntitlements' call will only return transactions for IAP and subscriptions. I would assume that 'Transaction.all' would work, but when I run the app (with Xcode debugger attached) I get no results. What's the best way to test this out for an app that's going to be paid-up-front?
2
0
1.2k
Mar ’22
macOS Monterey partition missing "SF Pro Text" font
I want to use the "SF Pro Text" font in my app. It works fine when I build my app on my main computer running macOS11 Big Sur, but I have a 2nd partition to run macOS Monterey, and it doesn't seem to be available there at all, whether through Interface Builder or through code (using NSFontManager). Using this returns nil on my Monterey partition: NSFont* regularFont = [[NSFontManager sharedFontManager] fontWithFamily:@"SF Pro Text" traits:NSFontWeightRegular weight:5 size: 16.0]; Maybe I'm missing something here ... should I have to install the font manually? I thought the SF Font is a 'system font', so it would be available on all Macs?
1
0
1.6k
Feb ’22
Unable to accept "Paid Applications Agreement"
Hi, When I login to App Store connect, I get a banner message saying "Review the updated Paid Applications Schedule": In order to update your existing apps, create new in-app purchases, and submit new apps to the App Store, the user with the Legal role (Account Holder) must review and accept the Paid Applications Schedule (Schedule 2 to the Apple Developer Program License Agreement) in the Agreements, Tax, and Banking module. When I click the link, select "View and Agree Terms", and select the checkbox and select the "Agree" button to accept the terms, I get an error message: We are currently unable to process your request. Please try again later. This has been happening for the past 2 days now. What should I try to do to overcome this problem? I'll file a bug with Apple, but it takes them many days to respond to these issues usually.
16
0
5.3k
Jan ’22
macOS: Detect Link URL from WidgetKit extension
I am building a widget for my (AppKit) Mac app, and one thing I can't figure out is how to detect when a Link is pressed in the widget to open the parent app. It just opens the parent app but I can't get any information about the URL that was passed in. With iOS, it's easy to detect, from the AppDelegate method: - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation I can't find anything equivalent on macOS. Can someone point me to the right place?
1
0
876
Nov ’21
Can Intents Extensions access the container app's Application Support directory?
Hi, My Mac app saves it's local database and other important information in the Application Support directory. I want to now create an Intents extension for the app so I can create shortcut actions. When I currently run this, the Application Support directory for the extension is different than for the main application. Is there any way on macOS for the extension to access it's parent applications App Support directory? I know it's not possible in iOS, and you have to use App Groups for this, but I'm wondering about the Mac. BTW, the app is a sandboxed app for the Mac App Store.
1
0
1k
Oct ’21
How to add SiriKit to macOS app
Hi, I haven't been able to add some basic SiriKit actions to my macOS app in macOS Monterey. To test this out, I created a new project, made it a macOS app with Storyboard. Then I added an intents definition file, and added a basic intent, with no inputs/outputs. I added the intent name to "Supported Intents" in the target "General" configuration. Now when I build and run the app, the shortcut doesn't show up in the Apple Shortcuts app. I've tried looking for the "Siri" capability in "Signing & Capabilities" and it's not listed there (compared to a new iOS app where it would be). I'm not sure what I'm missing here. Would love some help. I'm using Xcode 13.1 on macOS Monterey RC.
1
0
887
Oct ’21
Installing macOS Catalina for testing
Hi, I want to install macOS Catalina on a partition on my computer's hard drive to test and fix some bugs for my Mac app. I can't seem to find a simple way to download the installer. I found a link to the Catalina page on the Mac App Store through some other website, but when I try to download it, I get an error saying "This copy of the macOS Catalina installer application is too old to be opened on this version of macOS". I've checked the Downloads page from the developer page, and it's not listed there either. What gives? Shouldn't be easier to test Mac apps on older versions? FWIW I'm trying this on a MacBook Pro 2016.
0
0
849
Oct ’21
SwiftUI: memory spike when keyboard is presented
I am working with a UIKit app, which has an MKMapView in it, which displays a bunch of MKAnnotationViews. For each annotation view, I'm using a SwiftUI view to draw the detailAccessoryView. This works, but whenever a keyboard is presented (even if it's in another view controller), I see a major memory spike in the app. For e.g., it goes from using 130MB to 600MB+ on an iPhone8 (the exact values don't matter of course). This explains a crash that seems to be happening with the same app in production as well, which I reported in this DevForums Thread From what I can tell, whenever a keyboard is shown, the SwiftUI views seem go repeatedly resize or re-layout themselves, maybe trying to reconfigure their internal layout or something. If I reduce the number of views in my SwiftUI view, it reduces the memory spike; if I remove the SwiftUI view and just use a plain UIView, the spike completely disappears. My question is: how can I get the SwiftUI views to ignore what's happening with the keyboard in some other view? I've read in some other threads that there is a 'keyboard avoidance' issue with iOS14 and above ... though in my SwiftUI view, there isn't any text field in it's own views. I've tried adding the modifier to the top-level SwiftUI view: .ignoresSafeArea(.keyboard) But it doesn't make a difference Can anyone shed some light on this? Is there another way to avoid keyboard changes in a SwiftUI view?
3
1
1.1k
Oct ’21
Xcode12 error: module compiled with Swift 5.2.4 cannot be imported by the Swift 5.3 compiler
Hi, I am trying to build my project with Xcode12, and I am running into this error: &lt;unknown&gt;:0: error: module compiled with Swift 5.2.4 cannot be imported by the Swift 5.3 compiler: /Users/zs/Documents/CJ/branches/CJ-400/SimpleList/Carthage/Build/iOS/PhoneNumberKit.framework/Modules/PhoneNumberKit.swiftmodule/x86_64-apple-ios-simulator.swiftmodule Not sure how to resolve this. I've tried: cleaning the build directory and building again cleaning build dir, plus deleting DerivedData, and restarting Xcode and building again running 'carthage update PhoneNumberKit --platform iOS', and doing another clean build changing the Xcode command-line tool to Xcode 12, and building again None of these have worked. What else can I try? Why am I getting this error? Would love some more information
10
0
23k
Aug ’21
Volume purchasing with In-app purchases
Hi, My app is free-to-download but with an in-app purchase to unlock all the features. A user wants to buy 15 copies of the "unlock" IAP and distribute it to his team, using MDM to distribute it easily. I don't believe there is a way to do this through business purchases, is that right? You can only download apps through MDM but not in-app purchases. So what's the best way to do this? Are there any standard solutions? Can I upload a new version of the app that's "paid up-front" but not available through the regular App Store, but only through MDM?
Replies
2
Boosts
0
Views
5k
Activity
May ’22
MailKit: access rawData for email
Hi, I am trying to build a Mail 'action' extension, and want to access the email body and parse it for specific content. Not sure how to go about converting the 'rawData' that comes in the MEMessage into something that I can read. Here's how I access the rawData property: func decideAction(for message: MEMessage, completionHandler: @escaping (MEMessageActionDecision?) -> Void) { var action: MEMessageActionDecision? = nil      if let messageData =  message.rawData {          print("messageData = \(messageData)") // what to do here??      } else {          action = MEMessageActionDecision.invokeAgainWithBody      } return action } The documentation just says this is 'unprocessed data': The content is available after MailKit downloads the message. MailKit provides the content as unprocessed data. For details about the format of the data, see RFC 2822. But I'm not sure what I'm supposed to do to go about converting the unprocessed 'data' into something that is accessible and useful to my app. Let me know if you have any thoughts or recommendations
Replies
2
Boosts
0
Views
1.7k
Activity
Apr ’22
StoreKit2: does Transaction.all include paid apps?
Hi, I have a paid app available through the Mac App Store, and when the user opens the app, I want to verify that the transaction of the payment is valid. I would have assumed that in StoreKit2, the 'Transaction.all' would work, but when I tested this, it shows 0 transactions for all users. This is what I'm testing: for await result in Transaction.all { guard case .verified(let transaction) = result else { continue } print("verified product = \(transaction.productID)") // send to analytics } But nothing gets observed in the analytics. Does the StoreKit2 framework have an easy way to determine transactions that are made for paid-up-front apps?
Replies
1
Boosts
0
Views
1.1k
Activity
Mar ’22
NSApplication's openURLs delegate method not getting called
Hi, I am trying to invoke this NSApplicationDelegate callback from my Mac app, but it's not getting called: - (void)application:(NSApplication *)application openURLs:(NSArray<NSURL *> *)urls I have registered the URL scheme in my Info.plist: <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLName</key> <string>com.my.testapp</string> <key>CFBundleURLSchemes</key> <array> <string>mytestapp</string> </array> </dict> </array> Now I use a 2nd Mac app to test this out, by invoking the following code: if let url = URL(string: "mytestapp://") {             NSWorkspace.shared.open(url)         } This causes my first app to come to the foreground, and the "applicationDidBecomeActive:(NSNotification *)notification" method gets called, but the "application:(NSApplication *)application openURLs:(NSArray<NSURL *> *)urls" method mentioned above doesn't get invoked, which is what I want. Any ideas about why that might be the case?
Replies
1
Boosts
0
Views
1.5k
Activity
Mar ’22
Detecting Link tap inside WidgetKit
Hi, I am working on a widget for my existing Mac app. The problem I am running into is that when I add a Link from the widget to the main app, the method 'openURLs' isn't called at all: - (void) application: (NSApplication *)application openURLs:(NSArray<NSURL *> *)urls  So I'm not able to direct the app on how to best handle the widget tap. I'm trying to work around that by trying to detect if a Link was selected. Something like this could work Link("Test", destination: URL(string: "https://duckduckgo.com")!) .environment(\.openURL, OpenURLAction { url in print("---> testing link actioned") return .systemAction }) When I add this to the main app, it works fine. But when I add something like this to the widget, the completion handler isn't called (supposedly). Can someone confirm if this was supposed to work inside a widget? Or is it only something that works from the main app?
Replies
0
Boosts
0
Views
709
Activity
Mar ’22
StoreKit2 to validate purchase of paid-app
Hi, I have a paid app in the Mac App Store, and I want to verify that the user purchased the app legitimately. Does the StoreKit2 framework have an easy way to determine this? From the documentation I've seen, I believe the 'Transaction.currentEntitlements' call will only return transactions for IAP and subscriptions. I would assume that 'Transaction.all' would work, but when I run the app (with Xcode debugger attached) I get no results. What's the best way to test this out for an app that's going to be paid-up-front?
Replies
2
Boosts
0
Views
1.2k
Activity
Mar ’22
macOS Monterey partition missing "SF Pro Text" font
I want to use the "SF Pro Text" font in my app. It works fine when I build my app on my main computer running macOS11 Big Sur, but I have a 2nd partition to run macOS Monterey, and it doesn't seem to be available there at all, whether through Interface Builder or through code (using NSFontManager). Using this returns nil on my Monterey partition: NSFont* regularFont = [[NSFontManager sharedFontManager] fontWithFamily:@"SF Pro Text" traits:NSFontWeightRegular weight:5 size: 16.0]; Maybe I'm missing something here ... should I have to install the font manually? I thought the SF Font is a 'system font', so it would be available on all Macs?
Replies
1
Boosts
0
Views
1.6k
Activity
Feb ’22
Unable to accept "Paid Applications Agreement"
Hi, When I login to App Store connect, I get a banner message saying "Review the updated Paid Applications Schedule": In order to update your existing apps, create new in-app purchases, and submit new apps to the App Store, the user with the Legal role (Account Holder) must review and accept the Paid Applications Schedule (Schedule 2 to the Apple Developer Program License Agreement) in the Agreements, Tax, and Banking module. When I click the link, select "View and Agree Terms", and select the checkbox and select the "Agree" button to accept the terms, I get an error message: We are currently unable to process your request. Please try again later. This has been happening for the past 2 days now. What should I try to do to overcome this problem? I'll file a bug with Apple, but it takes them many days to respond to these issues usually.
Replies
16
Boosts
0
Views
5.3k
Activity
Jan ’22
macOS: Detect Link URL from WidgetKit extension
I am building a widget for my (AppKit) Mac app, and one thing I can't figure out is how to detect when a Link is pressed in the widget to open the parent app. It just opens the parent app but I can't get any information about the URL that was passed in. With iOS, it's easy to detect, from the AppDelegate method: - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation I can't find anything equivalent on macOS. Can someone point me to the right place?
Replies
1
Boosts
0
Views
876
Activity
Nov ’21
Can Intents Extensions access the container app's Application Support directory?
Hi, My Mac app saves it's local database and other important information in the Application Support directory. I want to now create an Intents extension for the app so I can create shortcut actions. When I currently run this, the Application Support directory for the extension is different than for the main application. Is there any way on macOS for the extension to access it's parent applications App Support directory? I know it's not possible in iOS, and you have to use App Groups for this, but I'm wondering about the Mac. BTW, the app is a sandboxed app for the Mac App Store.
Replies
1
Boosts
0
Views
1k
Activity
Oct ’21
How to add SiriKit to macOS app
Hi, I haven't been able to add some basic SiriKit actions to my macOS app in macOS Monterey. To test this out, I created a new project, made it a macOS app with Storyboard. Then I added an intents definition file, and added a basic intent, with no inputs/outputs. I added the intent name to "Supported Intents" in the target "General" configuration. Now when I build and run the app, the shortcut doesn't show up in the Apple Shortcuts app. I've tried looking for the "Siri" capability in "Signing & Capabilities" and it's not listed there (compared to a new iOS app where it would be). I'm not sure what I'm missing here. Would love some help. I'm using Xcode 13.1 on macOS Monterey RC.
Replies
1
Boosts
0
Views
887
Activity
Oct ’21
Installing macOS Catalina for testing
Hi, I want to install macOS Catalina on a partition on my computer's hard drive to test and fix some bugs for my Mac app. I can't seem to find a simple way to download the installer. I found a link to the Catalina page on the Mac App Store through some other website, but when I try to download it, I get an error saying "This copy of the macOS Catalina installer application is too old to be opened on this version of macOS". I've checked the Downloads page from the developer page, and it's not listed there either. What gives? Shouldn't be easier to test Mac apps on older versions? FWIW I'm trying this on a MacBook Pro 2016.
Replies
0
Boosts
0
Views
849
Activity
Oct ’21
SwiftUI: memory spike when keyboard is presented
I am working with a UIKit app, which has an MKMapView in it, which displays a bunch of MKAnnotationViews. For each annotation view, I'm using a SwiftUI view to draw the detailAccessoryView. This works, but whenever a keyboard is presented (even if it's in another view controller), I see a major memory spike in the app. For e.g., it goes from using 130MB to 600MB+ on an iPhone8 (the exact values don't matter of course). This explains a crash that seems to be happening with the same app in production as well, which I reported in this DevForums Thread From what I can tell, whenever a keyboard is shown, the SwiftUI views seem go repeatedly resize or re-layout themselves, maybe trying to reconfigure their internal layout or something. If I reduce the number of views in my SwiftUI view, it reduces the memory spike; if I remove the SwiftUI view and just use a plain UIView, the spike completely disappears. My question is: how can I get the SwiftUI views to ignore what's happening with the keyboard in some other view? I've read in some other threads that there is a 'keyboard avoidance' issue with iOS14 and above ... though in my SwiftUI view, there isn't any text field in it's own views. I've tried adding the modifier to the top-level SwiftUI view: .ignoresSafeArea(.keyboard) But it doesn't make a difference Can anyone shed some light on this? Is there another way to avoid keyboard changes in a SwiftUI view?
Replies
3
Boosts
1
Views
1.1k
Activity
Oct ’21
Xcode12 error: module compiled with Swift 5.2.4 cannot be imported by the Swift 5.3 compiler
Hi, I am trying to build my project with Xcode12, and I am running into this error: &lt;unknown&gt;:0: error: module compiled with Swift 5.2.4 cannot be imported by the Swift 5.3 compiler: /Users/zs/Documents/CJ/branches/CJ-400/SimpleList/Carthage/Build/iOS/PhoneNumberKit.framework/Modules/PhoneNumberKit.swiftmodule/x86_64-apple-ios-simulator.swiftmodule Not sure how to resolve this. I've tried: cleaning the build directory and building again cleaning build dir, plus deleting DerivedData, and restarting Xcode and building again running 'carthage update PhoneNumberKit --platform iOS', and doing another clean build changing the Xcode command-line tool to Xcode 12, and building again None of these have worked. What else can I try? Why am I getting this error? Would love some more information
Replies
10
Boosts
0
Views
23k
Activity
Aug ’21