This repository contains distribution builds of the CascableCore framework from version 10.0 for use with the Swift Package Manager (SPM).
Despite the name of the distribution method, the framework is fully compatible with Objective-C. If you're using CascableCore with Swift, we recommend doing so via the CascableCoreSwift package, which contains some great Swift-y additions to CascableCore.
For older releases of the framwork, see the CascableCore Binaries repo.
For more information on the CascableCore product, including getting a trial license, see the Cascable Developer Portal.
The best starting point for working with the SDK is by seeing CascableCore in action by checking out the CascableCore Demo Projects repository. You'll need a trial license for it to do anything useful!
Next, our Getting Started With CascableCore document contains discussion about the CascableCore APIs and concepts in the order in which you're likely to encounter them. These APIs and concepts are equally important for both Objective-C and Swift developers.
API reference documentation for CascableCore can be found here.
To add CascableCore to your project, simply it as you would any other SPM module. If you're using CascableCoreSwift, it will bring CascableCore in as a dependency for you.
Once the SDK(s) are added, a few more steps must be done to comply with App Store and sandboxing policies. Most of this work is done in your app's
If your app is limited by App Transport Security, you need to allow CascableCore to talk to the cameras on your local network. To do this, set
YES in your
Info.plist App Transport Security settings.
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsLocalNetworking</key> <true/> </dict>
CascableCore makes no attempt to communicate with the outside world via the Internet, so no domain-specific App Transport Security exemptions are needed.
Apple's documentation for App Transport Security can be found here.
iOS 14 requires that permission is obtained from the user in order to use the local network. To do so, a usage description must be defined in your
Info.plist via the
<key>NSLocalNetworkUsageDescription</key> <string>MyCoolApp needs access to the local network in order to communicate with cameras over WiFi.</string>
You can find Apple's documentation on this here.
If your app is to work with cameras discovered using Bonjour (Canon EOS cameras in "EOS Utility" mode and some Nikon cameras), you should declare that you're resolving the PTP Bonjour service using the
NSBonjourServices key. For example:
<key>NSBonjourServices</key> <array> <string>_ptp._tcp</string> </array>
You can find Apple's documentation on this here.
If your app is to work with cameras discovered using SSDP (Canon cameras in "Smartphone" mode, some Sony cameras, and most Panasonic cameras), your app will need the
This entitlement must be applied for manually from Apple using this form. When explaining the need for this entitlement, language like this is appropriate:
In some cases, we need to be able to send UDP SSDP discovery broadcasts in order for cameras to be able to discover us and allow a connection. We also perform SSDP searches, and connect to various camera Bonjour services.
Apple's documentation for this entitlement can be found here.
|Last commit: 2 weeks ago|
CascableCore now supports the Mac Catalyst platform on both Intel and Apple Silicon. The minimum required deployment target is Mac Catalyst 15.0, which shipped with macOS 12.
Sony have added an encrypted network connection option, on by default, to its newest cameras. They're also backdeploying this feature to some existing cameras, such as the α7 IV, via firmware updates. We're pleased to announce that CascableCore now fully supports these encrypted connections.
Due to the need to collect a username and password to connect to these cameras, the camera connection API has breaking changes. See the documentation and demo projects for examples on the new camera connection API.
We've revamped live view zoom, which has introduced breaking changes to this API.
CBLCameraSupportedFunctionalityZoomableLiveView functionality flag is now deprecated, and the
-setLiveViewZoomLevel:completionCallback: method has been removed.
A new property,
CBLPropertyIdentifierLiveViewZoomLevel, has been added in replacement. The property can expose multiple zoom levels, and values conform to
id <CBLLiveViewZoomLevelPropertyValue> allowing you to target specific zoom levels, make sure the camera is or isn't zoomed in, etc.
Added a new functionality flag,
CBLCameraSupportedFunctionalityPannableLiveView, which signals whether a camera can pan around a zoomed-in live view. If available, the new method
-setLiveViewZoomCenterPoint:completionCallback: can be used to pan live view around.
Added support for the Sony α7R V, α7C R, α7C II, and α6700. [CORE-564]
Added support the Nikon Z f. [CORE-636]
Added touch AF, focus geometry, and live view zoom to newer Sony cameras that support these features. [CORE-565, CORE-566]
Improved live view zoom support for Nikon cameras. [CORE-50]
For newer Sony cameras, the
-currentCommandCategories property now more accurately represents the camera's state, and calling
-setCurrentCommandCategories:… will now manipulate the exposure mode property in order to get the camera into the desired state. [CORE-594]
Implemented a number of improvements in an attempt to track down reports of truncated file transfers from Canon EOS 5D Mark IV cameras. [CORE-606]
isProtected properties on filesystem items are now correctly dynamically updated when changed on newer Canon camera bodies.
Increased the amount of data CascableCore will transfer to get a high-resolution preview of a NEF RAW image before falling back to a lower-resolution thumbnail. [CORE-387]