Notice
Recent Posts
Recent Comments
Link
투케이2K
95. (Objective-C/objc) SceneDelegate 사용해 url scheme 스키마 접속 여부 체크 실시 본문
Objective-C
95. (Objective-C/objc) SceneDelegate 사용해 url scheme 스키마 접속 여부 체크 실시
투케이2K 2022. 9. 22. 15:36[개발 환경 설정]
개발 툴 : XCODE
개발 언어 : OBJECTIVE-C
[소스 코드]
#import "SceneDelegate.h"
// MARK: - [헤더 [선언부] 호출]
@interface SceneDelegate ()
@end
@implementation SceneDelegate
// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. UI 딜리게이트 (구현부)
2. ios 13 이상 사용 : API_AVAILABLE(ios(13.0))
// -----------------------------------------
*/
// MARK: - [UI창 선택적 구성 및 제공된 UI창에 Scene 연결]
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions API_AVAILABLE(ios(13.0)){
printf("\n");
printf("=============================== \n");
printf("[SceneDelegate >> willConnectTo] \n");
printf("[설명 :: UI창 선택적 구성 및 제공된 UI창에 Scene 연결] \n");
printf("=============================== \n");
printf("\n");
// [URL 접속 체크]
NSSet *c = connectionOptions.URLContexts;
if(c != nil && [c count] > 0){
NSURL *url = ((UIOpenURLContext*)[[c allObjects] firstObject]).URL;
printf("\n");
printf("=============================== \n");
printf("[SceneDelegate >> willConnectTo] \n");
printf("[설명 :: URL 스키마 접속 체크 실시] \n");
printf("[url :: %s] \n", url.absoluteString.description.UTF8String);
printf("=============================== \n");
printf("\n");
// [스키마 접속 정보 저장]
[[NSUserDefaults standardUserDefaults] setObject:@"willConnectTo" forKey:@"SCHEME_KEY"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
}
// MARK: - [시스템에 의해서 Scene 해제 : background 상태 및 session 삭제]
- (void)sceneDidDisconnect:(UIScene *)scene API_AVAILABLE(ios(13.0)){
printf("\n");
printf("=============================== \n");
printf("[SceneDelegate >> sceneDidDisconnect] \n");
printf("[설명 :: 시스템에 의해서 Scene 해제 : background 상태 및 session 삭제] \n");
printf("=============================== \n");
printf("\n");
}
// MARK: - [Scene 활성화 및 사용자 이벤트에 응답 실시]
- (void)sceneDidBecomeActive:(UIScene *)scene API_AVAILABLE(ios(13.0)){
printf("\n");
printf("=============================== \n");
printf("[SceneDelegate >> sceneDidBecomeActive] \n");
printf("[설명 :: Scene 활성화 및 사용자 이벤트에 응답 실시] \n");
printf("=============================== \n");
printf("\n");
}
// MARK: - [Scene 활성 상태 해제 및 사용자 이벤트에 대한 응답 중지]
- (void)sceneWillResignActive:(UIScene *)scene API_AVAILABLE(ios(13.0)){
printf("\n");
printf("=============================== \n");
printf("[SceneDelegate >> sceneWillResignActive] \n");
printf("[설명 :: Scene 활성 상태 해제 및 사용자 이벤트에 대한 응답 중지] \n");
printf("=============================== \n");
printf("\n");
}
// MARK: - [Scene 포그라운드 실행]
- (void)sceneWillEnterForeground:(UIScene *)scene API_AVAILABLE(ios(13.0)){
printf("\n");
printf("=============================== \n");
printf("[SceneDelegate >> sceneWillEnterForeground] \n");
printf("[설명 : Scene 포그라운드 실행] \n");
printf("=============================== \n");
printf("\n");
}
// MARK: - [Scene 백그라운드 실행]
- (void)sceneDidEnterBackground:(UIScene *)scene API_AVAILABLE(ios(13.0)){
printf("\n");
printf("=============================== \n");
printf("[SceneDelegate >> sceneDidEnterBackground] \n");
printf("[설명 : Scene 백그라운드 실행] \n");
printf("=============================== \n");
printf("\n");
}
// MARK: - [URL 스키마 접속 체크 부분]
- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts API_AVAILABLE(ios(13.0)){
NSURL *schemeUrl = [[URLContexts allObjects] firstObject].URL;
printf("\n");
printf("=============================== \n");
printf("[SceneDelegate >> openURLContexts] \n");
printf("[설명 : URL 스키마 접속 체크 실시] \n");
printf("[schemeUrl : %s] \n", schemeUrl.absoluteString.description.UTF8String);
printf("=============================== \n");
printf("\n");
// [스키마 접속 정보 저장]
[[NSUserDefaults standardUserDefaults] setObject:@"openURLContexts" forKey:@"SCHEME_KEY"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
// -----------------------------------------
@end
// -----------------------------------------
[결과 출력]
반응형
'Objective-C' 카테고리의 다른 글
Comments