Tôi đang làm việc trên ứng dụng này ra mắt các ứng dụng khác. Tôi nghe ra mắt ứng dụng sử dụng:
Cách khởi chạy Ứng dụng, từ Ứng dụng của tôi, với thông số tùy chỉnh để tôi có thể kiểm tra xem ứng dụng có được khởi chạy bởi tôi không?
[[[NSWorkspace sharedWorkspace] notificationCenter] addObserver:self
selector:@selector(appLaunched:) name:NSWorkspaceDidLaunchApplicationNotification
object:nil];
Và tôi khởi động chúng bằng cách sử (Mail chỉ là một ví dụ):
NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:[NSArray arrayWithObject:@"lalalala"], NSWorkspaceLaunchConfigurationArguments, nil];
[[NSWorkspace sharedWorkspace] launchApplicationAtURL:[NSURL URLWithString:@"/Applications/Mail.app"] options:NSWorkspaceLaunchWithoutActivation configuration:dict error:nil];
tôi đã làm một số nghiên cứu, và tôi thấy rằng bạn có thể gửi một đối số khi bạn khởi chạy một ứng dụng (đó là lý do tại sao tôi sử dụng var dict
trong mã ở trên), nhưng tôi đang gặp vấn đề với điều này: thậm chí sử dụng NSWorkspaceLaunchWithoutActivation
, Mail.app được khởi chạy và trở nên tập trung với một cửa sổ soạn thư mới. Tôi không biết tại sao nó lại làm vậy.
Một điều khác, nếu tôi quản lý thành công gửi đối số tùy chỉnh mà không tập trung ứng dụng, làm cách nào để kiểm tra xem ứng dụng có được khởi chạy hay không (kiểm tra xem đối số có ở đó) không?
PS: Tôi đang tìm các phương pháp sẵn sàng cho App Store.
Bạn không thể kiểm tra args ra mắt của ứng dụng khác trừ khi ứng dụng cung cấp một API để làm như vậy giống như các dòng lệnh. Đối số là thứ bạn thấy trong main.m của mỗi mẫu ứng dụng Cocoa. Tôi muốn chuẩn POSIX argc và argv cho chính() – uchuugaka
Bạn có thể lấy lại ID tiến trình sau khi khởi động và sử dụng nó để truy vấn sau này không? –
NSWorkspaceLaunchConfigurationArguments không khả dụng cho các ứng dụng hộp cát: https://developer.apple.com/reference/appkit/nsworkspacelaunchconfigurationarguments –