Post

Replies

Boosts

Views

Activity

Inter process communication between sandboxed Mac app and plugin
Hi,I have an application App A which shares data with a macOS DAL plugin using IPC (shared memory). The plugin is loaded in another 3rd party App B:App A <--- data ---> Plugin / App BNow I am looking for a way to get this working with App A being sandboxed. The App Groups Entitlement (https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_security_application-groups) seems to be the correct tool for allowing IPC between two applications. But the problem with my architecture is, that the communication is between App A (whose identifier is known) and a plugin (identifier is known) and a third party App B (identifier is not known).Is there a way to communicate between the sandboxed App A and the plugin running in App B without knowing App B's identifier?Regards,P.S: I am targeting the app store with App A.
6
0
2.8k
Jun ’20
WARNING ITMS-90889 TestFlight
Hi, When submitting manually signed macOS apps then this warning is shown after submission: WARNING ITMS-90889: ""Cannot be used with TestFlight because the bundle at is missing a provisioning profile. Main bundles are expected to have provisioning profiles in order to be eligible for TestFlight."" I use the following commands for signing the app: export VM_CERTIFICATE="Apple Distribution" codesign --deep -f -s "$VM_CERTIFICATE" -v --entitlements "$VM_SOURCE_PATH/macos/App.entitlements" "$VM_APPNAME" productbuild --component "$VM_APPNAME" /Applications --sign "3rd Party Mac Developer Installer: MyCompany" outmac.pkg How can I get rid of the warning, so that the package can be used in TestFlight? Regards,
2
0
1.9k
Dec ’21
How to sign macOS app with bundled frameworks for TestFlight
Hi, I have a Qt app (https://www.qt.io/) which contains the main app executable file, Qt frameworks, and Qt plugins bundled. Signing the app this way works fine and the app is successfully published on the Mac App Store (the "deep" flag is only used for testing): codesign --deep -f -s "Apple Distribution" -v --entitlements "MyApp.entitlements" "MyApp.app" Entitlements: <?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>com.apple.security.files.user-selected.read-write</key> <true/> <key>com.apple.security.network.client</key> <true/> <key>com.apple.security.network.server</key> <true/> <key>com.apple.security.files.downloads.read-write</key> <true/> <key>com.apple.security.device.audio-input</key> <true/> <key>com.apple.security.device.serial</key> <true/> <key>com.apple.security.files.bookmarks.app-scope</key> <true/> <key>com.apple.security.personal-information.location</key> <true/> <key>com.apple.security.app-sandbox</key> <true/> </dict> </plist> But as soon as I change the entitlements file as follows, the app crashes with a "Code signature invalid" error: <?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>com.apple.security.files.user-selected.read-write</key> <true/> <key>com.apple.security.network.client</key> <true/> <key>com.apple.security.network.server</key> <true/> <key>com.apple.security.files.downloads.read-write</key> <true/> <key>com.apple.security.device.audio-input</key> <true/> <key>com.apple.security.device.serial</key> <true/> <key>com.apple.security.files.bookmarks.app-scope</key> <true/> <key>com.apple.security.personal-information.location</key> <true/> <key>com.apple.security.app-sandbox</key> <true/> <key>com.apple.application-identifier</key> <string>TEAM_ID.com.myapp</string> <key>com.apple.developer.team-identifier</key> <string>TEAM_ID</string> </dict> </plist> Running codesign -dvvv --entitlement :- ./MyApp.app on the signed app packages shows the correct entitlement. I can upload both app versions to the Mac App Store without problems. The modified entitlements file is required for enabling TestFlight testing in iTunes Connect. What could be the reason for the crash when using the modified entitlements file? Regards,
1
0
1.2k
Dec ’21
Make DAL virtual camera plugin to show up in QuickTime
Hi, I have written a DAL virtual webcam plugin which works fine with all apps (Zoom, OBS, ...) except Apple QuickTime. Other 3rd party virtual webcams show up in QuickTime, for instance the OBS virtual cam plugin: https://github.com/obsproject/obs-studio/tree/dde4d57d726ed6d9e244ffbac093d8ef54e29f44/plugins/mac-virtualcam/src/dal-plugin My first intention was that it has something to do with code signing, so I removed the signature from OBS virtual cam plugin but it kept working in QuickTime. This is the source code of my plugin's entry function: #include <CoreFoundation/CoreFoundation.h> #include "plugininterface.h" extern "C" void *TestToolCIOPluginMain(CFAllocatorRef allocator, CFUUIDRef requestedTypeUUID) { // This writes to a log file in /tmp/logfile.txt but is NEVER called from QuickTime: Logger::write("Called TestToolCIOPluginMain"); if (!CFEqual(requestedTypeUUID, kCMIOHardwarePlugInTypeID)) return nullptr; return VCam::PluginInterface::create(); } And the plugin's Info.plist (almost the same as OBS virtual cam's one): <?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>CFBundleDevelopmentRegion</key> <string>English</string> <key>CFBundleExecutable</key> <string>TestDriverCIO</string> <key>CFBundleIdentifier</key> <string>com.test.cmio.DAL.VirtualCamera</string> <key>LSMinimumSystemVersion</key> <string>10.13</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> <string>TestDriverCIO</string> <key>CFBundlePackageType</key> <string>BNDL</string> <key>CFBundleShortVersionString</key> <string>3.0.0</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>3.0.0</string> <key>CFBundleSupportedPlatforms</key> <array> <string>MacOSX</string> </array> <key>CFPlugInFactories</key> <dict> <key>AAAAAAAA-7320-5643-616D-363462697402</key> <string>TestToolCIOPluginMain</string> </dict> <key>CMIOHardwareAssistantServiceNames</key> <array> <string>com.test.cmio.VCam.Assistant</string> </array> <key>CFPlugInTypes</key> <dict> <key>30010C1C-93BF-11D8-8B5B-000A95AF9C6A</key> <array> <string>AAAAAAAA-7320-5643-616D-363462697402</string> </array> </dict> </dict> </plist> Interestingly "TestToolCIOPluginMain" is never called (the logger never writes an output) when starting QuickTime and the camera is not shown in QuickTime. Is there something special required to get the DAL plugin to show up in QuickTime? What am I missing here? Regards,
1
0
1.9k
Feb ’22
Means for showing status when iOS app is in background
Hi, I have an iOS app which controls and monitors 3rd party Bluetooth devices. When the app is in background then background BLE mode is used. On Android there are means for showing customized information in the status bar (e.g. a device's current measurement value). On iOS the only means to present information to the user when the app is in background mode is by means of push notifications (e.g. when the device gets disconnected then send a push notification). But I see no way to present the current measurement value. Have I overlooked something, or is it really not possible to present the user additional information in the status bar and/or as some kind of "always visible" overlay icon when the app is in background? Regards,
0
0
894
Nov ’22
List available WiFi networks in Sonoma
Hi, I am trying to get a list of available WiFi networks for a sandboxed macOS app: CWInterface *wifi = [[CWWiFiClient sharedWiFiClient] interface]; NSError *err; NSSet *scanset = [wifi scanForNetworksWithSSID:nil error:&err]; // scanset is always empty (but not nil), no error is writting to "err" With macOS Sonoma the code always returns an empty list (with older macOS version it works fine). I already added Location permission (as described here: https://developer.apple.com/forums/thread/732431). Getting the currently connected WiFi SSID (using [CWInterface interface].ssid), as well as connecting to a WiFi network works. How can I get a list of available WiFi SSIDs in macOS Sonoma? Regards,
2
0
836
Mar ’24