Hi.
I want to create a new UIScene when my app opens a file in some condition.
So I wrote requestSceneSessionActivation in scene(_:openURLContexts:).
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
		let options = UIScene.ActivationRequestOptions()
		options.requestingScene = scene
	
UIApplication.shared.requestSceneSessionActivation(nil, userActivity: createUserActivity(for: url), options: options) { error in
			print(debug: error)
		}
	}
private func createUserActivity(for url: URL) -> NSUserActivity {
		let userActivity = NSUserActivity(activityType: getUserActivityType(idx: 1)!)
		userActivity.requiredUserInfoKeys = ["url"]
		userActivity.addUserInfoEntries(from: ["url": url])
		(UIApplication.shared.delegate as? AppDelegate)?.url = url
		 return userActivity
		}
But scene(_:willConnectTo:options:) gets an empty userInfo.
Is it impossible to include an URL of a file in iCloud Drive in NSUserActivity#userInfo?
I guess that it is not because it is a Security-Scoped URL.
Is my understanding right?
And if so, how can I pass a Security-Scoped URL to a scene to be created?
Of course, If you make a property for it in your AppDelegate, you can do it but I think that it is not normal.
Thank you in advance,
Selecting any option will automatically load the page
Post
Replies
Boosts
Views
Activity
Hi.
When Catalyst was released, I understood that it consisted of two factors, compiling for Intel CPU and UIKit on macOS.
So you needs to add target "Mac" and Mac.entitlements on Xcode to run your app on Catalyst.
Now M1 Mac appears and it runs iPhone/iPad apps without the above compilation if they are distributed.
In this case, still do iPhone/iPad apps run on Catalyst?
(I mean that macOS-specific features such as UIHoverGestureRecognizer work on M1 Mac if you implement some using these features.)
2. Why don't you need Mac.entitlements?
The above two questions are just what I come up with.
Detail summary is welcome.
Thanks
Hi.
In the sample code "Offering, Completing, and Restoring In-App Purchases
"(https://developer.apple.com/documentation/storekit/in-app_purchase/offering_completing_and_restoring_in-app_purchases), there is a cleanup code in applicationWillTerminate method.func applicationWillTerminate(_ application: UIApplication) {
// Remove the observer.
SKPaymentQueue.default().remove(StoreObserver.shared)
}
But applicationWillTerminate method is not called when the app is suspended according to the document (https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623111-applicationwillterminate).
What would happen about StoreObserver.shared if the suspended app is terminated?
Thanks.
Hi.
I want my iPad app to run Intel/M1 Mac.
I tried Mac Catalyst and it seems work basically.
But I want the app to enable to close a window even if it has opened a modal.
NSWindow has "preventsApplicationTerminationWhenModal" property.
Are there any alternatives for Mac Catalyst or iPad app on M1 Mac?
Thanks.
Hi.
I implemented a broadcast upload extension and it requests local notifications.
The local notification works normally on broadcastStarted(withSetupInfo:), but the Banner of the local notification does not work on processSampleBuffer(_: with:) though its Notification Center works normally.
What am I missing?
Here is my code snippets.
container app
class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
requestAuthorization()
...
}
private func requestAuthorization() {
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options: [.alert]) { granted, error in
if let error = error {
// Handle the error here.
print(error)
}
if granted == true {
center.delegate = self
center.getNotificationSettings(completionHandler: { setting in
print(setting)
})
}
else {
print("not permitted")
}
}
}
}
upload extension
class SampleHandler: RPBroadcastSampleHandler {
override func broadcastStarted(withSetupInfo setupInfo: [String : NSObject]?) {
super.broadcastStarted(withSetupInfo: setupInfo)
notification(title: "Upload Extension", body: "broadcastStarted")
...
}
override func processSampleBuffer(_ sampleBuffer: CMSampleBuffer, with sampleBufferType: RPSampleBufferType) {
super.processSampleBuffer(sampleBuffer, with: sampleBufferType)
...
if some condition {
notification(title: "Upload Extension", body: "processSampleBuffer")
}
}
private func notification(title: String, body: String) {
let content = UNMutableNotificationContent()
content.title = title
content.body = body
let request = UNNotificationRequest(identifier: UUID().uuidString, content: content, trigger: nil)
let notificationCenter = UNUserNotificationCenter.current()
notificationCenter.add(request) { error in
if error != nil {
print(error)
}
}
}
}
Hi.
I could have changed the device on the preview of storyboard in previous Xcode via its bottom toolbar easily.
But now I cannot do it.
How can I change it?
Hi.
I know that UIApplication#keyWindow is deprecated since iOS/iPadOS 13.0.
But now (iOS/iPadOS 16.5), UIWindow#isKeyWindow and didBecomeKeyNotification seem deprecated, too.
isKeyWindow is always true and didBecomeKeyNotification is never triggered.
Is my understanding right?
And if so, since what version of iOS/iPadOS are they deprecated?
Hi.
I want to implement a template selection such as Pages and Numbers.
Currently I am using DocumentGroup scene on SwiftUI.
How can I implement it?
init(
newDocument: @autoclosure @escaping () -> Document,
@ViewBuilder editor: @escaping (FileDocumentConfiguration<Document>) -> Content
)
The initializer of DocumentGroup may suggest that the newDocument argument should open template selector and return one when the selector is closed.
But I think that it may beome a complicated implementation.
What is a right way to implement the template selector?
Hi.
I am using Xcode 15.0.1.
Even when idle, Xcode consumes a lot of power.
I guess that something is wrong.
How can I avoid it?
Hi.
I am measuring performances of methods in unit test on Xcode.
Measuring performances on release build is important since you can know if a performance issue will be solved by compiler or not.
However, when you specify its build as release, you cannot use @testable.
Please tell me any manners.
Thanks.
Hi.
I know to know which window gets hardware keyboard events (such as shortcut key) currently on iPad.
Until iPadOS 15.0, UIApplication.shared.keyWindow, which was deprecated on iPadOS 13.0 and didBecomeKeyNotification/didResignKeyNotification.
But after iPadOS 15.0, a keyWindow is managed by UIScene, not by UIApplication.
Each scene of my app always has just one window.
For my purpose, checking deprecated UIApplication.shared.keyWindow is still effective but didBecomeKeyNotification and didResignKeyNotification don't work because they are fired when a change happens only inside the scene.
So my questions are,
What is the new alternative of UIApplication.shared.keyWindow?
I know a wrong hack like
UIApplication.shared.connectedScenes.compactMap { $0 as? UIWindowScene }.first?.windows.filter { $0.isKeyWindow }.first
does not work since the order of connectedScenes is not related with getting hardware keyboard events.
What are the new alternatives of didBecomeKeyNotification/didResignKeyNotification which work on inter-scene?
The second question is more crucial.
Because about the first question, I can still use deprecated UIApplication.shared.keyWindow.
Thanks.
Hi.
I am implementing some neural network model by MPSGraph on Radeon Mac.
I want to accelerate it by float16 since Radeon can execute kernels with float16 twice faster than float32.
Is it possible?
I mean, does MPSGraph support native float16 on Radeon GPU?
If so, how can I do it?
Setting all datatypes to float16?
Thanks.
Hi.
I want to make my Playground Book public.
How can I prepare and provide Swift Playgrounds subscription server?
Thanks.
Hi.
I want to implement the code below using vDSP.
for i in a.indices {
a[i] = n[i] == 0.0 ? 0.0 : b[i] / n[i]
}
This code is slow.
Are there any good implementation using Accelerate framework?
Hi.
Excuse me for no reprodcution code.
My app on macOS Monterey runs MPSGraph#run repeatedly.
For a minutes, Xcode console shows "Context leak detected, CoreAnalytics returned false" repeatedly and the system slows down.
Do I need to release some resource for each calling of run method?
Thanks