The notification parameter in DidFinishLaunching contains a key LaunchIsDefaultLaunchKey which according to Apple documentation is:
The value for this key is an NSNumber containing a Boolean value. The value is false if the app was launched to open or print a file, to perform a Service action, if the app had saved state that will be restored, or if the app launch was in some other sense not a default launch. Otherwise its value will be true.
I m not able to understand the exact usecase for this parameter, like where can we make use of this parameter.
Can I use this key to identify If my application was launched using a universal link?
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
I have observed that some of the applications like xcode show a list of recently opened documents in their dock menu like in the image below. I wanted to show similar recently opened docs for my application but I not able to find any resource on how to achieve this. Can someone help on how to do this?
I have created a universal link which I m using for two different applications in macOS. Below is the apple-app-site-association file for the same:
{
"applinks":{
"apps":[],
"details":[
{
"appID":"E5R4JF6D5K.com.demo.App1",
"paths":[
"/app1/*"
]
},
{
"appID":"E5R4JF6D5K.world.demo.App2",
"paths":[
"/app2/*"
]
}
]
}
}
After creating this file in my server and providing the same Url in my associated domain capability for both my application, when I try to launch my applications using the link then only the first application is getting launched everytime. The second application is never launched.
for Url with http://custom.com/app1/... it redirects to first app.
for Url with http://custom.com/app2/... it redirects to browser.
I tried uninstalling the first app, but then it always directs in browser.
I tried a separate url for both apps, and it works fine.
I m not able to figure out the problem. The apple documentation says that it is possible to have two application linked to a common domain. Any help?
I wanted to add some dock menu options for my application when it is not running. These dock menu options can be used to launch the application. I came across dock TilePlugin that can be used to add these dock options. But one of the comments in this forum discussion mentions that these Plugins are not allowed if you want ot publish your application in the appStore.
Can someone confirm this? If this is true, then Is there some other solution that can be used to add the dock options which appear when the application is not running, and can be used to launch the application?
Also do the recent open Files appear using this plugin mechanism?
I was going through this apple documention and it states, "By default, the generated header contains interfaces for Swift declarations marked with the public or open modifier", however, In my Xcode project, the public methods are not visible in the objective C code, and only the methods that are marked with @objc are visible. Is there some problem in my code or Is this a bug?
In the mac general setting, we can provide the language preference for an individual application like in the image below, I have provided for TextEdit app.
Now based on the system preferred languages, TextEdit will have a default language. However if I explicitly set the language for TextEdit (arabic in my example), then the application will use that language. I wanted to identify in my program the language that an app is currently running in. I have tried the below code, but it always return 'en', even after my preference is set to 'Arabic'.
let u = URL(fileURLWithPath: "/System/Applications/TextEdit.app")
let b = Bundle(url: u)!
let textedit_preference = b.preferredLocalizations
print(textedit_preference) //["en"]
How can I identify what language is being set by the user for an individual application? I have followed this link but it does not contain this information.
I have a project where I m making direct swift calls from cpp as introduced in swift5.9. Below is my swift class whose method is being invoked on cpp.
import Foundation
public class MySwiftClass
{
public static func testInterop () -> Void {
NSLog("----------- hey --------")
}
}
I m able to successfully invoke 'testInterop()' in cpp with the above class, however if I add conformance to NSObject in the 'MySwiftClass' class, then the swift call fails with the error "No member named 'MySwiftClass' in namespace 'Module2'", where Module2 is my swift target.
I m not able to identify why is this happening. Any help?
I am having a usecase where I wanted to detect the system language change event under OS X. I went throught the available options in NSNotification.Name , but did not find anything helpful. I found a similar link but it seems to be no longer applicable.
Any help on how this can be achieved?
I m trying to create an xcode project with cpp-swift interoperability(introduced in xcode15) using cmake xcode generator. I m able to invoke cpp code in swift and vice-versa but when opening the project in xcode, the build setting for 'C++ and Objective-C Interoperability' is still set to 'C/Objective C' like in image below. I want to set it to 'C++/Objective-C++'.
I m using the below cmake for this:
.
.
add_library(cxx-support ./Sources/CxxSupport/Student1.cpp
./Sources/CxxSupport/Teacher.swift
)
#include the directory to access modulemap content
target_include_directories(cxx-support PUBLIC
${CMAKE_SOURCE_DIR}/Sources/CxxSupport)
target_compile_options(cxx-support PUBLIC
"$<$<COMPILE_LANGUAGE:Swift>:-cxx-interoperability-mode=default>"
)
.
.
I Have also tried the below in cmake, but it didn't work.
#set(SWIFT_OBJC_INTEROP_MODE "objcxx" CACHE STRING "")
#target_compile_options(cxx-support PUBLIC
#"SWIFT_OBJC_INTEROP_MODE=objcxx")
Any help on how this can be achieved?
I am creating an Xcode project using xcode generator in Cmake. The project has a library which contains cpp files and swift files. I m trying to test swift-cpp interoperability that is introduced in xcode15 to perform direct cpp calls from swift and vice-versa. For this to work, we need to set a xcode build setting 'C++ and Objective-C Interoperability' which I m doing via cmake, Below is my cmake file:
cmake_minimum_required(VERSION 3.18)
project(CxxInterop LANGUAGES CXX Swift)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED YES)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_Swift_LANGUAGE_VERSION 5.0)
add_executable(CxxInterop ./Sources/CxxInterop/main.swift
./Sources/CxxInterop/Student.cpp
)
#include the directory with modulemap file and Student.hpp
target_include_directories(CxxInterop PUBLIC
${CMAKE_SOURCE_DIR}/Sources/CxxInterop)
#setting the xcode C++ and Objective-C Interoperability setting
target_compile_options(CxxInterop PRIVATE
"-cxx-interoperability-mode=default")
when building the generated xcode project I get the error unknown argument: '-cxx-interoperability-mode=default'.
However the weird thing is when I separate out the cpp code in a different library and swift files in a different one, then this works and I m able to invoke the cpp methods in my swift file after importing the clang module from the module map file.
Is there any reason to why having cpp and swift files in same library producing this error? I m following this link to setup the project via cmake.
I have been using the Cpp-Swift Interoperability in Xcode15 for direct communication between Cpp and Swift code. It required a few Build settings changes for the Swift Compiler, creating clang modules(module map file) to access cpp code in swift, specifying module map path to the swift compiler etc.
I wanted to use this interoperability feature in my visual studio project which is using Cmake. I want to build via cmake, using Xcode generator.
Prior to Swift5.9, we were using a ObjC bridging header whose support was provided in the Cmake using the Xcode attribute flag 'XCODE_ATTRIBUTE_SWIFT_OBJC_BRIDGING_HEADER'. Similarly we were specifying the generated header using the attribute 'XCODE_ATTRIBUTE_SWIFT_OBJC_INTERFACE_HEADER_NAME'
I m not able to find similar Xcode attribute property flags for my Cmake to enable this interoperability. What are the changes that we need to make in the Cmake(using Xcode generator) for this new interoperability to work. Can someone help with this?
I have been using the Cpp-Swift Interoperability in Xcode15 for direct communication between Cpp and Swift code. It required a few Build settings changes for the Swift Compiler and creating clang modules to access cpp code in swift.
I wanted to use this interoperability feature in my visual studio project which is using Cmake. I m not able to find the Xcode attribute property flags for my cmake to enable this interoperability. Can someone help with this?
I have a need to interoperate between cpp and swift. Here when we return a 'String' type from swift to cpp, the type that we receive in cpp is 'swift::string'.
I wanted to convert 'swift::string' to char* in cpp. Any help on how can this be achieved in cpp?
Hi,
I am an absolute beginner at IOKit registry and have a usecase to obtain the device manufacturer name, device serial number and device USB vendor name progrmatically. I m able to obtain the same using ioreg command but I wanted to get these values within my program. Thanks in advance.
Device serial number:
ioreg -rd1 -c IOPlatformExpertDevice | grep 'IOPlatformSerialNumber'
Device manufacturer name:
ioreg -rd1 -c IOPlatformExpertDevice | grep 'manufacturer'
USB device vendor names:
ioreg -rd1 -c IOUSBHostDevice | grep "USB Vendor Name"
I m trying to identify if my launched process is running on a local mac machine(desktop/laptop) or a virtual macOS X instance like AWS EC2, Azure, MacStadium etc.
I am using the below check for this:
1 . If running on native Apple hardware, the returned value contains the model name of the hardware:
$ sysctl -n hw.model
Macmini8,1
On virtualized hardware, the value may contain the hypervisor name:
$ sysctl -n hw.model
VMware7,0
If the command output doesn't contain the "Mac" substring, the malware considers that it is running in a virtual machine.
2. Checking USB device vendor names
The commands used:
ioreg -rd1 -c IOUSBHostDevice | grep "USB Vendor Name"
Sample output on native Apple hardware:
"USB Vendor Name" = "Apple Inc."
"USB Vendor Name" = "Apple Inc."
"USB Vendor Name" = "Apple, Inc."
On virtualized hardware, the value may contain the hypervisor name:
"USB Vendor Name" = "VirtualBox"
"USB Vendor Name" = "VirtualBox"
A virtual machine can be detected by checking if the command output contains a hypervisor name, for example "VirtualBox", "VMware", etc.
3 . Checking the "IOPlatformExpertDevice" registry class
The command used:
ioreg -rd1 -c IOPlatformExpertDevice
The following fields of the IOPlatformExpertDevice class can be checked in order to detect a virtual machine:
I wanted to know can a combination of these be used to identify a process running on a Cloud VM with certainity?