Notice
Recent Posts
Recent Comments
Link
투케이2K
22. (TWOK/UTIL) [Ios/Swift] C_Intent - 인텐트 (settings) , 애플리케이션 , 메일 , 문자 , 전화 , 링크 설정창 이동 클래스 본문
투케이2K 유틸파일
22. (TWOK/UTIL) [Ios/Swift] C_Intent - 인텐트 (settings) , 애플리케이션 , 메일 , 문자 , 전화 , 링크 설정창 이동 클래스
투케이2K 2022. 3. 26. 11:10[설 명]
프로그램 : Ios / Swift
설 명 : 인텐트 (settings) , 애플리케이션 , 메일 , 문자 , 전화 , 링크 설정창 이동 클래스
[소스 코드]
import Foundation
import UIKit
import SafariServices
// MARK: [extension 정의 실시 : 뷰 컨트롤러]
extension UIViewController {
// MARK: - [클래스 설명]
/*
// -----------------------------------------
1. 모바일 설정, 애플리케이션 설정 인텐트 이동 클래스
2. 인텐트 (settings) , 애플리케이션 , 메일 , 문자 , 전화 , 링크 설정창 이동 클래스
// -----------------------------------------
*/
// MARK: - [애플리케이션 설정창 이동 실시]
func goAppSetting() {
/*
// -----------------------------------------
[goAppSetting 메소드 설명]
// -----------------------------------------
1. 애플리케이션 설정창 이동 수행 메소드
// -----------------------------------------
2. 호출 방법 : self.goAppSetting()
// -----------------------------------------
*/
// [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
DispatchQueue.main.async {
//if let url = URL(string: C_Util().getMobilePackageName()) {
if let url = URL(string: UIApplication.openSettingsURLString) {
print("")
print("====================================")
print("[C_Intent >> goAppSetting() :: [앱 설정] 화면 이동 수행]")
print("====================================")
print("")
// [이동 수행 실시]
UIApplication.shared.open(url, options: [:], completionHandler: nil)
}
else {
print("")
print("====================================")
print("[C_Intent >> goAppSetting() :: [앱 설정] 화면 이동 실패]")
print("====================================")
print("")
}
}
}
// MARK: [전화 (tel) 이동 실시]
func goTelIntent(_url : String) {
/*
// -----------------------------------------
[goTelIntent 메소드 설명]
// -----------------------------------------
1. tel , mailto , sms , l 등을 사용해 디바이스 외부 앱을 수행할 수 있습니다
// -----------------------------------------
2. 전화 걸기 : tel:010-1234-5678
// -----------------------------------------
3. 메일 보내기 : mailto:honggildung@test.com
// -----------------------------------------
4. 문자 보내기 : sms:010-5678-1234
// -----------------------------------------
5. 링크 이동 : l:https://naver.com
// -----------------------------------------
6. 호출 예시 : self.goTelIntent(_url: "tel:010-1234-5678")
// -----------------------------------------
*/
// [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
DispatchQueue.main.async {
// [사전 인풋 값 널 데이터 체크 수행 실시]
if _url != nil && _url.count>0 && _url != "" && _url.hasPrefix("tel"){
}
else {
print("")
print("====================================")
print("[C_Intent >> goTelIntent() :: [전화] 이동 실패]")
print("-------------------------------")
print("error :: 사전 인풋 데이터 체크 에러")
print("-------------------------------")
print("_url :: \(_url)")
print("====================================")
print("")
// [리턴 종료]
return
}
// [스키마명을 사용해 외부앱 실행 실시 [사용가능한 url 확인]]
if let openApp = URL(string: _url), UIApplication.shared.canOpenURL(openApp) {
print("")
print("====================================")
print("[C_Intent >> goTelIntent() :: [전화] 이동 수행]")
print("-------------------------------")
print("_url :: \(_url)")
print("====================================")
print("")
// [버전별 처리 실시]
if #available(iOS 10.0, *) {
UIApplication.shared.open(openApp, options: [:], completionHandler: nil)
}
else {
UIApplication.shared.openURL(openApp)
}
}
//스키마명을 사용해 외부앱 실행이 불가능한 경우
else {
print("")
print("====================================")
print("[C_Intent >> goTelIntent() :: [전화] 이동 실패]")
print("-------------------------------")
print("_url :: \(_url)")
print("====================================")
print("")
}
}
}
// MARK: [메일 (mail) 이동 실시]
func goMailIntent(_url : String) {
/*
// -----------------------------------------
[goMailIntent 메소드 설명]
// -----------------------------------------
1. tel , mailto , sms , l 등을 사용해 디바이스 외부 앱을 수행할 수 있습니다
// -----------------------------------------
2. 전화 걸기 : tel:010-1234-5678
// -----------------------------------------
3. 메일 보내기 : mailto:honggildung@test.com
// -----------------------------------------
4. 문자 보내기 : sms:010-5678-1234
// -----------------------------------------
5. 링크 이동 : l:https://naver.com
// -----------------------------------------
6. 호출 예시 : self.goMailIntent(_url: "mailto:honggildung@test.com")
// -----------------------------------------
*/
// [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
DispatchQueue.main.async {
// [사전 인풋 값 널 데이터 체크 수행 실시]
if _url != nil && _url.count>0 && _url != "" && _url.hasPrefix("mailto"){
}
else {
print("")
print("====================================")
print("[C_Intent >> goMailIntent() :: [메일] 이동 실패]")
print("-------------------------------")
print("error :: 사전 인풋 데이터 체크 에러")
print("-------------------------------")
print("_url :: \(_url)")
print("====================================")
print("")
// [리턴 종료]
return
}
// [스키마명을 사용해 외부앱 실행 실시 [사용가능한 url 확인]]
if let openApp = URL(string: _url), UIApplication.shared.canOpenURL(openApp) {
print("")
print("====================================")
print("[C_Intent >> goMailIntent() :: [메일] 이동 수행]")
print("-------------------------------")
print("_url :: \(_url)")
print("====================================")
print("")
// [버전별 처리 실시]
if #available(iOS 10.0, *) {
UIApplication.shared.open(openApp, options: [:], completionHandler: nil)
}
else {
UIApplication.shared.openURL(openApp)
}
}
//스키마명을 사용해 외부앱 실행이 불가능한 경우
else {
print("")
print("====================================")
print("[C_Intent >> goMailIntent() :: [메일] 이동 실패]")
print("-------------------------------")
print("_url :: \(_url)")
print("====================================")
print("")
}
}
}
// MARK: [문자 (sms) 이동 실시]
func goSmsIntent(_url : String) {
/*
// -----------------------------------------
[goSmsIntent 메소드 설명]
// -----------------------------------------
1. tel , mailto , sms , l 등을 사용해 디바이스 외부 앱을 수행할 수 있습니다
// -----------------------------------------
2. 전화 걸기 : tel:010-1234-5678
// -----------------------------------------
3. 메일 보내기 : mailto:honggildung@test.com
// -----------------------------------------
4. 문자 보내기 : sms:010-5678-1234
// -----------------------------------------
5. 링크 이동 : l:https://naver.com
// -----------------------------------------
6. 호출 예시 : self.goSmsIntent(_url: "sms:010-5678-1234")
// -----------------------------------------
*/
// [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
DispatchQueue.main.async {
// [사전 인풋 값 널 데이터 체크 수행 실시]
if _url != nil && _url.count>0 && _url != "" && _url.hasPrefix("sms"){
}
else {
print("")
print("====================================")
print("[C_Intent >> goSmsIntent() :: [문자] 이동 실패]")
print("-------------------------------")
print("error :: 사전 인풋 데이터 체크 에러")
print("-------------------------------")
print("_url :: \(_url)")
print("====================================")
print("")
// [리턴 종료]
return
}
// [스키마명을 사용해 외부앱 실행 실시 [사용가능한 url 확인]]
if let openApp = URL(string: _url), UIApplication.shared.canOpenURL(openApp) {
print("")
print("====================================")
print("[C_Intent >> goSmsIntent() :: [문자] 이동 수행]")
print("-------------------------------")
print("_url :: \(_url)")
print("====================================")
print("")
// [버전별 처리 실시]
if #available(iOS 10.0, *) {
UIApplication.shared.open(openApp, options: [:], completionHandler: nil)
}
else {
UIApplication.shared.openURL(openApp)
}
}
//스키마명을 사용해 외부앱 실행이 불가능한 경우
else {
print("")
print("====================================")
print("[C_Intent >> goSmsIntent() :: [문자] 이동 실패]")
print("-------------------------------")
print("_url :: \(_url)")
print("====================================")
print("")
}
}
}
// MARK: [하이퍼 링크 이동 실시]
func goLinkIntent(_url : String) {
/*
// -----------------------------------------
[goLinkIntent 메소드 설명]
// -----------------------------------------
1. tel , mailto , sms , l 등을 사용해 디바이스 외부 앱을 수행할 수 있습니다
// -----------------------------------------
2. 전화 걸기 : tel:010-1234-5678
// -----------------------------------------
3. 메일 보내기 : mailto:honggildung@test.com
// -----------------------------------------
4. 문자 보내기 : sms:010-5678-1234
// -----------------------------------------
5. 링크 이동 : l:https://naver.com
// -----------------------------------------
6. 호출 예시 : self.goLinkIntent(_url: "l:https://naver.com")
// -----------------------------------------
*/
// [메인 큐에서 비동기 방식 실행 : UI 동작 실시]
DispatchQueue.main.async {
// [사전 인풋 값 널 데이터 체크 수행 실시]
if _url != nil && _url.count>0 && _url != "" && _url.hasPrefix("l:")
&& _url.contains("http") == true || _url.contains("https") == true {
}
else {
print("")
print("====================================")
print("[C_Intent >> goLinkIntent() :: [하이퍼링크] 이동 실패]")
print("-------------------------------")
print("error :: 사전 인풋 데이터 체크 에러")
print("-------------------------------")
print("_url :: \(_url)")
print("====================================")
print("")
// [리턴 종료]
return
}
// [l: 문자열 제거 및 원본 url 데이터 만들기]
let link = String(describing: _url.suffix(_url.count - 2))
// [로그 출력 실시]
print("")
print("====================================")
print("[C_Intent >> goLinkIntent() :: [하이퍼링크] 이동 수행]")
print("-------------------------------")
print("_url :: \(link)")
print("====================================")
print("")
// [외부 링크 이동 수행 실시]
UIApplication.shared.open(URL(string: link)!, options: [:])
}
}
} // [extension 종료]
반응형
'투케이2K 유틸파일' 카테고리의 다른 글
Comments