스위프트

let url = Bundle.main.url(forResource: "파일이름", withExtension: "pdf")

 

if let url = url {

    let webView = WKWebView(frame: view.frame)

    let urlRequest = URLRequest(url: url)

    webView.load(urlRequest)

}

 

Objective-C

NSURL *bundleUrl = [[NSBundle mainBundle] URLForResource:@"파일이름" withExtension:@"pdf"];

[self.popupWebView loadRequest:[NSURLRequest requestWithURL:bundleUrl]];

Posted by 자바리즘
,

아이폰에서 다운받은 파일을 보여주는 UIDocumentInteractionController 에 대해 알아보고자 한다.

 

NSSessionDataTask 로 pdf 를 다운받고, 다운 받은 파일을 여는 과정을 해보자.

 

헤더 델리게이트 정의

ViewController 헤더에 <UIDocomentInteractionControllerDelegate> 를 선언해두자.

 

헤더 프로퍼티 선언

@property (nonatomic, strong) UIDocumentInteractionController *documentInteractionController;

 

메인 코드 구현

self.documentInteractionController = [UIDocomentInteractionController interactionControllerWithURL: fileUrl];

 

fileUrl 파라미터는 NSURL 형식의 로컬 주소이다.

 

//delegate 추가

self.documentInteractionController.delegate = self;

헤더에 델리게이트를 선언 해주었기 때문에 self 로 설정한다.

 

//열기

[self.documentInteractionController presentPreviewAnimated:YES];

 

//delegate 함수

- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller {

    return self;

}

Posted by 자바리즘
,

기본적으로 노드가 설치되어 있어야 합니다.

npm을 사용할 수 있는 환경을 만들어주세요.

 

vue-cli 를 통한 webpack 패키지로 시작을 하도록 하겠습니다.

 

1. vue-cli 설치

npm install -g vue-cli

 

2. webpack 설치 (기본적인 템플릿을 제공합니다, 많은 기능이 필요 없다면, webpack-simple 로 해도 무방합니다.)

설치하려는 폴더로 이동한 후, 아래 명령어를 입력합니다.

vue init webpack my-project

 

위에서 webpack 을 명시한 곳에는 옵셔널로 다른 값을 주어도 됩니다. (예: webpack-simple, browserfy, simple 등등)

my-project 는 프로젝트의 이름입니다.

 

3. 프로젝트 폴더 이동

cd my-project

 

4. node_module 설치

npm install

 

5. local 환경에서 실행 (로컬 브라우저에서 결과물을 볼 수 있습니다.)

npm run dev

 

 

vue 를 사용하기 위한 템플릿을 만들었습니다. 이제부터 코딩을 해보도록 하겠습니다.

다음시간에..

Posted by 자바리즘
,

 

Target SDK 를 28로 올리면서 갑자기 ClearText Not Permitted 라는 메시지를 로그캣에서 볼 수 있었다.

 

웹뷰 로드도 안되고,

API 전송도 안되고...

단지 28로 올렸을 뿐인데...

 

온전히 의심은 타겟과 컴파일 sdk 였다.

 

안드로이드 PIE(9.0) 에서 강화된 네트워크 보안정책으로 인해 오류를 내뱉었다.

해결방법은 3가지가 존재한다.

 

1. AndroidManifest 에서 application 태그에 

android:userCleartextTraffic="true" 로 설정을 한다.

 

2. networkSecurityConfig 파일을 생성하고, AndroidManifest 에 설정을 한다.

 

network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>

<network-security-config>

    <domain-config cleartextTrafficPermitted="true">

        <domain includeSubdomains="true">mydomain.com 여기에 사용할 도메인을 등록한다.</domain>

    </domain-config>

</network-security-config>

 그런 후, 메니페스트 Application 태그에

android:networkSecurityConfig="@xml/network_security_config"

를 설정해둔다.

 

3. AndroidManifest 파일에서 targetSandboxVersion 을 1로 설정한다.

targetSandboxVersion 을 높일수록 보안 수준이 높아지며, 2일 경우 userCleartextTraffic의 값이 false 로 설정됩니다.

그러나 Android 8.0 (API 26) 이상을 타겟팅하는 앱의 경우 이 속성을 2로 설정해야 합니다.

 

그리고, 한번 앱이 설치되면 속성값을 더 높은 값으로만 업데이트 할 수 있다고 합니다. 마치 버전코드 같이 사용을 하고 있나봅니다.

 

참고하세요.

 

 

 

Posted by 자바리즘
,

라이브러리를 사용할 때, 이미 퍼미션 선언이 되어있어서 곤란한 적이 있는가?


그렇다면,


현재 프로젝트 매니페스트파일에서


아래와 같이 선언해주자! 아래 예는 카메라 권한을 삭제해주는 퍼미션이다.


<uses-permission android:name="android.permission.CAMERA" tools:node="remove"/> 



'안드로이드 > TIP' 카테고리의 다른 글

카카오 등에서 키해시가 맞지 않는 경우  (0) 2020.10.27
ClearText Not Permitted  (0) 2019.03.29
안드로이드 3.3.1 패브릭 오류  (0) 2019.02.18
웹뷰 비동기 로직 호출  (0) 2019.01.04
FileProvider  (0) 2018.09.06
Posted by 자바리즘
,

안드로이드 스튜디오를 3.3.1 로 업데이트 하고 나서, 프로젝트를 빌드하니 

아래와 같은 오류가 발생하였다.


무슨 이유인가 해서 구글링을 해보니, 패브릭에 대한 오류였다.


build.gradle 에 2번째 첨부사진과 같이 패브릭을 사용하기 위해 선언해두었던 부분이 문제가 되어,

삭제하고 빌드를 하니 오류가 없어졌다.


새로운 스튜디오 버전에는 패브릭이 포함이 되있다.


해결방법에는 여러가지가 있지만 아래 build.gradle 에 선언된 부분을 제거하고 빌드하면 해결은 된다.




[빌드오류]




build.gradle 에 선언된 fabric



'안드로이드 > TIP' 카테고리의 다른 글

ClearText Not Permitted  (0) 2019.03.29
특정 퍼미션만 제거해보자!  (0) 2019.02.21
웹뷰 비동기 로직 호출  (0) 2019.01.04
FileProvider  (0) 2018.09.06
Screen Orientation (화면 방향)  (0) 2018.07.26
Posted by 자바리즘
,

터미널을 열고


$ sudo vi /etc/hosts


또는


$ sudo vi /private/etc/hosts


키보드 i 를 눌러서 수정하고, 다했으면 esc 누르고


:wq 입력하고 Enter (저장하고 종료)


:q 그냥 종료

Posted by 자바리즘
,