반응형

We do our best to protect users' personal information in accordance with relevant laws and personal information handling policies.

 

1.Purpose of collecting and using personal information

-We use Google Analytics to improve the service, and the following information may be collected through Google Analytics. (App installation, deletion, update event / Device type and operating system used / App event location, gender, age, funnel path)

-Google Analytics Terms of Service: http://www.google.com/analytics/terms/us.html

-Google Privacy Policy: http://www.google.com/intl/en/policies/privacy/

 

2. Period of retention and use of personal information

-We do not hold and use personal information.

-Google Analytics: You can check the privacy policies of Admob and Google Analytics at https://policies.google.com/privacy?hl=en.

 

3. Procedure and method of destruction of personal information

-We do not collect, use, or hold personal information.

-Admob, Google Analytics: https://policies.google.com/technologies/retention?hl=en

 

4. Sharing personal information and providing it to a third party

 -Personal information items provided: https://policies.google.com/privacy?hl=en#infocollect

 -Retention and use period of the recipient: https://policies.google.com/technologies/retention?hl=en

 

5. Google Privacy Policy and Youtube API Service Terms of Use The "Company" uses the YouTube API service and complies with the Terms of Use and Privacy Policy.

YouTube Terms of Service (https://www.youtube.com/t/terms)

Google Privacy Policy (https://policies.google.com/privacy)

YouTube API Services Terms of Use (https://developers.google.com/youtube/terms/api-services-terms-of-service) 

 

In the event of a situation in which personal information is separately shared or provided with a third party for the provision of services, KidsTube notifies or consents to the user in advance in accordance with the'Act on Promotion of Information and Communication Network Utilization and Information Protection, etc.' and personal information handling policy. I receive it.

반응형
반응형

관계 법령 및 개인정보 취급방침에 따라 사용자 개인정보 보호에 최선을 다합니다. 

 

1.개인정보의 수집 및 이용목적

- 서비스 개선을 위해 Google Analytics 를 사용하고 있으며, Google Analytics 를 통해 다음 정보를 수집할 수 있습니다. (앱 설치, 삭제, 업데이트 이벤트 / 사용 디바이스 기종 및 운영체제 / 앱 이벤트 위치, 성별, 연령, 유입경로)

- Google Analytics 서비스 약관 : http://www.google.com/analytics/terms/us.html

- Google 개인정보보호 정책 : http://www.google.com/intl/en/policies/privacy/

 

2.개인정보의 보유 및 이용기간

- 개인정보를 보유 및 이용하지 않습니다.

- Google Analytics : Admob과 Google Analytics의 개인정보처리방침은 https://policies.google.com/privacy?hl=ko 에서 확인하실 수 있습니다.
 

3.개인정보의 파기 절차 및 방법

- 개인정보를 수집, 이용, 보유하지 않습니다.

- Admob, Google Analytics  : https://policies.google.com/technologies/retention?hl=ko

 

4.개인정보 공유 및 제3자 제공

 - 제공하는 개인정보 항목 : https://policies.google.com/privacy?hl=ko#infocollect

 - 제공받는 자의 보유․이용기간 : https://policies.google.com/technologies/retention?hl=ko

 

5. Google 개인정보 처리방침 및 Youtube API Service 이용 약관"회사"는 YouTube API 서비스를 사용하고 있으며 이용 약관 및 개인 정보 보호 정책을 준수합니다.
YouTube 서비스 약관 (https://www.youtube.com/t/terms)
Google 개인 정보 취급 방침 (https://policies.google.com/privacy)
YouTube API Services 이용약관 (https://developers.google.com/youtube/terms/api-services-terms-of-service)

 

서비스의 제공을 위해 별도로 타사와 개인정보를 공유하거나 제공할 상황이 발생할 경우, 키즈튜브 '정보통신망 이용촉진 및 정보보호 등에 관한 법률'및 개인정보 취급방침에 따라 사용자에게 사전에 고지하거나 동의를 받습니다.

 

반응형
반응형

ituncesconnect 에 빌드된 파일을 업로드 할 때

수출규정 관련 문서가 누락되었다고 느낌표가 뜨는 경우가 있다.

 

이것은 어플에 암호화 기능이 있으면 반드시 추가를 해줘야하는 문서 인것같다.

필자는 암호화 기능을 써본적이 없다.

그래서 항상 무시를 했었다. 무시를 해도 암호화 기능만 없다면 정상적으로 처리가 되었다.

 

느낌표가 나오는 게 찝찝하다면, 아래와 같이 해도 될 것 같다.

xcode에서 info.plist에서 추가한다.

<key>ITSAppUsesNonExemptEncryption</key> <No>

 

 

추가 했을 경우 메세지가 사라졌다.

반응형
반응형

https://github.com/ADVTOOLS/ADVTrustStore

 

ADVTOOLS/ADVTrustStore

ADVTrustStore is a simple management script to import/list/remove CA certificates to the iOS simulator. It is working for iOS 5 and iOS 6. - ADVTOOLS/ADVTrustStore

github.com

보안 관련하여 인증서를 회사에서 받았다. 이후 Xcode 시뮬레이터에서 인터넷이 되지 않았다.

결론은 시뮬레이터에도 동일한 인증서를 넣어주어야 한다.

 

위 사이트를 들어가보면 해결 방안이 잘 나와있다. 

참고로 필자도 위 사이트를 보고 해결하였다.

항상 그랬듯 찾는 시간이 오래 걸리지 해결은 쉬웠다.

 

iosCerTrustManager.py 를 다운 받는다.

$ ./iosCertTrustManager.py --help

$ ./iosCertTrustManager.py -a fileName.pem

subject= CN = goodgods.tistory.com <- 인증서

 

Import certificate to iPhone 11 Pro Max v13.3 [y/N] y

Importing to /Users/comms/Library/Developer/CoreSimulator/Devices/70B8D234-8CD5-43F7-8915-80378BB7116C/data/Library/Keychains/TrustStore.sqlite3

  Certificate added

Import certificate to iPhone 11 v13.3 [y/N] y

Importing to /Users/comms/Library/Developer/CoreSimulator/Devices/8BE1EF1C-42D4-4C17-BC25-685EBB0726C2/data/Library/Keychains/TrustStore.sqlite3

  Certificate added 

 

 

xcode 12에서 안된다면...

1. 파일경로에 한글이 포함된 폴더가 존재하면 안되는 것 같다.

2. 원하는 시뮬레이터를 실행시킨 후에 해보자.

반응형
반응형

실행 오류
상세오류

 

singing 이 맞지 않아서 생긴 문제라고 한다.

signing 부분을 수동으로 관리하고 있었는데, 이부분을 auto로 했더니 잘된다.

 

다만 이렇게 되면 실배포할때는 또 안될 것 같다는 생각이든다.

그럴땐 다시 수동으로 해줘야할 것같은데, Target을 복사해서 singing 부분만 바꿔서 사용해야할지 고민을 해봐야할 것 같다.

 

 

반응형
반응형

let message = "abcdefg\n1234567\n가나다라마바사\nABCDEFG"

let line = message.reduce(into: 0) { (count,letter) in

    if letter == "\n" {

        count += 1

    }

}

 

print(line)

 

https://stackoverflow.com/questions/46490920/count-the-number-of-lines-in-a-swift-string

반응형

'Programming > Swift' 카테고리의 다른 글

[swift5] 시뮬레이터에 인증서 넣기  (0) 2020.02.25
[Swift5] 아이폰 연결시 에러  (0) 2020.02.03
xcode git 연동 문제  (0) 2020.01.16
[swift] slide animation  (0) 2019.11.21
[cocoaPods] 프로젝트 만들어 보기  (0) 2019.10.22
반응형

pc를 재설치하고 Xcode에 git 셋팅 후 작업을 해보았다.

그러나 아래와 같은 메세지를 보여주며 작동이 되지 않는다.

 

이런 경우 Fix 버튼을 눌러서 Author Name, Author Email 값을 넣어준다.

끝.

반응형
반응형

맥에서만 그런건지는 확실하지 않다.

다만 2시간동안 맥에서 삽질을 하면서 알게된 것이다.

 

$ vi /etc/apache2/http.conf

DocumentRoot "/Users/사용자명/www"

<Directory "/Users/사용자명/www">

DocumentRoot 의 값을 설정해 줄 때, 경로를 /Users/사용자명/Documents 로 설정을 해주면

퍼미션 등 500 에러가 뜬다.

원인은 알 수 없으나, 추측하건데 소유자 문제가 아닐지 의심해 본다.

폴더 권한을 777로 줘봐도 같은 에러가 뜬다.

 

결론은 

/Users/사용자명/www 처럼 새로운 폴더를 만들어서 사용을 하자!!

반응형
반응형

case 1.

let transition = CATransition()

transition.type = CATransitionType.push

transition.subtype = CATransitionSubtype.fromLeft

memoView.layer.add(transition, forKey: nil)

memoView.addSubview(countChartView)

memoView.addSubview(closeMemoButton)

case 2.

UIView.transition(with: self.memoView, duration: 1.0, options: [.transitionFlipFromRight], animations: {

      memoView.addSubview(countChartView)

//       self.memoView.removeFromSuperview()

}, completion: nil)

 

 

반응형

'Programming > Swift' 카테고리의 다른 글

[Swift5] 문자열에 대한 라인수 구하기  (0) 2020.01.29
xcode git 연동 문제  (0) 2020.01.16
[cocoaPods] 프로젝트 만들어 보기  (0) 2019.10.22
[iOS13] 당황스럽게 변경된 점  (0) 2019.10.22
[Swift] opacity  (0) 2019.03.22
반응형

본 내용은 2019년 2월 28일에 메모장에 작성된 것을 복붙한 것이다.

기억이 잘 안나지만, 이게 작동이 되었는지는 알 수 없다.

다만 했다는 기억만으로 이렇게 남겨 놓는다.

 

 

1. Github repository 만들기

 

2. cocoaPods 사이트에서 동일한 이름이 있는지 확인하자.

    ex. https://cocoapods.org/pods/mySamplePods 접속하던가, 사이트내에서 검색을 해보아라.

 

3. cocoaPods 프로젝트 만들기

$ pod lib create demoPods

/Users/sk/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/executable.rb:89: warning: Insecure world writable dir /Users/sk/Documents/2016/hadoop/hadoop-1.2.1/sbin in PATH, mode 040777

Cloning `https://github.com/CocoaPods/pod-template.git` into `demoPods`.

Configuring demoPods template.

/Users/sk/Documents/2016/Development/cocoaPods/demoPods/setup/TemplateConfigurator.rb:207: warning: Insecure world writable dir /Users/sk/Documents/2016/hadoop/hadoop-1.2.1/sbin in PATH, mode 040777

security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.

 

-----------------------------------------------------------------------------------------------------------------------------

 

To get you started we need to ask a few questions, this should only take a minute.

 

If this is your first time we recommend running through with the guide: 

 - https://guides.cocoapods.org/making/using-pod-lib-create.html

 ( hold cmd and double click links to open in a browser. )

 

 

What platform do you want to use?? [ iOS / macOS ]

 > iOS

 

What language do you want to use?? [ Swift / ObjC ]

 > Swift

 

Would you like to include a demo application with your library? [ Yes / No ]

 > Yes

 

Which testing frameworks will you use? [ Quick / None ]

 > None

 

Would you like to do view based testing? [ Yes / No ]

 > No

security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.

security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.

security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.

security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.

security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.

security: SecKeychainSearchCopyNext: The specified item could not be found in the keychain.

 

Running pod install on your new library.

 

/Users/sk/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/cocoapods-1.6.1/lib/cocoapods/executable.rb:89: warning: Insecure world writable dir /Users/sk/Documents/2016/hadoop/hadoop-1.2.1/sbin in PATH, mode 040777

Analyzing dependencies

Fetching podspec for `demoPods` from `../`

Downloading dependencies

Installing demoPods (0.1.0)

Generating Pods project

Integrating client project

 

[!] Please close any current Xcode sessions and use `demoPods.xcworkspace` for this project from now on.

Sending stats

Pod installation complete! There is 1 dependency from the Podfile and 1 total pod installed.

 

[!] Automatically assigning platform `ios` with version `9.3` on target `demoPods_Example` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.

 

 Ace! you're ready to go!

 We will start you off by opening your project in Xcode

  open 'demoPods/Example/demoPods.xcworkspace'

 

To learn more about the template see `https://github.com/CocoaPods/pod-template.git`.

To learn more about creating a new pod, see `http://guides.cocoapods.org/making/making-a-cocoapod`. 

 - 위 keycahin 찾을수없다는 메세지가 나오는데 모르겠음. 

 - 명령어를 실행시킨 위치에서 하위 폴더가 생성 것이다.

 - Xcode 자동 실행된다.

 

4. mySamplePods.podspec 수정

 - 수정할 대상은 s.name, s.version, s.homepage 등이 있다.
 - 하지만 주어진 포맷대로 수정을 해보았지만 오류가 많다.
 - 나의 방법은 그동안 평소 쓰던 다른 사람들이 만들어 놓은 cocoapods GitHub 라이브러리 들어가서 podspec 파일을 가져와서 그대로 수정해주면 된다.

 

5. 파일을 생성하고 스위프트 버전을 넣어준다.

$ vi .swift-version

4.2 <- 버전

6. pod lib lint

 - .podspec 파일을 맞게 작성했는지 체크를 한다.

 

7. Error 체크

 - 에러가 것이다. 여러가지 에러가 나온다. 정말 울화가 치밀어 오른다. 너무 많은 에러를 접했는데 그나마 자주 등장하는 에러만 적어 보았다.

## 1 ##

WARN  | [iOS] swift: The validator used Swift 3.2 by default because no Swift version was specified. To specify a Swift version during validation, add the `swift_version` attribute in your podspec. Note that usage of the `--swift-version` parameter or a `.swift-version` file is now deprecated.
.swift-version 파일을 생성하였지만, 그래도 위와 같은 에러가 발생한다. 이유모름
“pod lib lint —swift-version=4.2” 같이 실행하라.
—swift-version=4.2 옵션은 아래에서도 동일하게 사용된다.

 

## 2 ##
ERROR | [iOS] file patterns: The `resources` pattern did not match any file.
resources 폴더 또는 파일이 존재않는 것이다. 혹은 경로를 잘못 입력하였거나

 

## 3 ##
WARN  | url: The URL (https://github.com/Name/mySamplePods) is not reachable.
유효한 웹페이지를 입력해야한다. 일단 접속되는 아무 URL 입력해도 되는 같음.

 

## 4 ##
demoPods passed validation.
문구가 나오면 성공한 것이다.

 

8. git push

## $ git init  => 존재한다고 하면 그냥 무시.
Reinitialized existing Git repository in /cocoaPods/mySamplePods/.git/


## $ git add -all
## $ git commit -m “Initial commit”
## $ git tag 0.1.0 => 동일 버전을 입력
## $ git remote add origin https://github.com/developer/mySamplePods.git

## $ git push -u origin master —tags => 에러!! ~ 짱나
error: failed to push some refs to 'https://github.com/developer/mySamplePods.git'
=> 이럴 경우 찾아보니 해결 방법은 많은 같더라. 한개 해봤는데 안돼!
## $ git pull --rebase origin master
## $ git push origin master
=> 강제적으로 넣는게 있다고 해서 그냥 이걸로 했음. $ git push origin +master
## github 사이트에가서 제대로 업로드가 되었는지 확인 해보자. 

 

9. CocoaPods 등록 : 인증작업

$ pod trunk register myEamilAddress@gmail.com mySamplePodsTrunk --description=“mySamplePods.PG"

명령어가 실행이 된 후 메일 내용 확인

 

위 메일 내용의 링크를 클릭하면 이와 같은 페이지가 나타난다.

 

10. CocoaPods 등록 : 업로드

$ pod trunk push demoPods.podspec --swift-version=4.2

에러가 나서 확인을 했더니, .podspec 파일의 값이 리셋되어 있는 것이 아닌가 ㅠㅠ
다시 수정하여 재실행 하였다. 결국에는 아래와 같이 나왔다. 성공이다.

수정이 되었는지 알수없다. 다만 git push 할때 강제로 해서 그럴 같다는 생각이 든다.
https://cocoapods.org/pods/mySamplePods 접속을 해보면 접속이된다.

그러나 이 작업이 성공하지 못하면, 잘못된 페이지라고 나올 것이다.

완료된 메세지

11. 이제 사용 해볼까?

현재버전

Xcode 보면 Pods 프로젝트에서 Development Pods 에서 작업을 하면 되는 같다.
Development Pods > mySamplePods > Pod > Classes > *.swift  —> Classes 없으면 만들어 주면 된다.
수정을 했다고 가정하고, .podspec 파일 버전업을 시켜준다.

그리고 위에서 했던 처럼 git 올리고 cocoapods 올리면 된다.
cocoapods 사이트가서 확인해보면 버전이 올라간 것을 확인 있다.

 

버전업

12. 테스트로 임시적으로 프로젝트를 만들어서 pod install 해보자.

반응형

'Programming > Swift' 카테고리의 다른 글

xcode git 연동 문제  (0) 2020.01.16
[swift] slide animation  (0) 2019.11.21
[iOS13] 당황스럽게 변경된 점  (0) 2019.10.22
[Swift] opacity  (0) 2019.03.22
[Swift] UserDefaults.standard int형식으로 불러오기  (0) 2019.02.18
반응형

1. present(_:animated:completion:)

화면전환 시 사용되는 present의 기존 iOS13 이전까지만 해도 default가 fullScreen 이였다.

하지만 iOS13 부터 formsheet가 되었다. 설정을 위해서는 automatic으로 지정해야한다.

그래서 기존 처럼 fullScreen 을 하기 위해서는 아래와 같이 지정한다.

cell.modalPresentationStyle = .fullScreen

self.present(cell, animated: true, completion: nil)

//자세한 내용

https://zeddios.tistory.com/828

https://stackoverflow.com/questions/56435510/presenting-modal-in-ios-13-fullscreen

https://zonneveld.dev/ios-13-viewcontroller-presentation-style-modalpresentationstyle/

 

2. adMob 전면 광고

잘 되던 전면광고가 formSheet처럼 보여지게 되었고, 광고가 전부 보여지지 않고, 반쪽만 보여지게 되었다.

Google-Mobile-Ads-SDK 를 최신버전으로 설치하자.

필자 같은 경우 7.3 버전이였고 7.5로 업데이트를 하였더니, 아무문제 없었다.

 

2-1. adMob 광고

info.Plist에 이것도 추가를 해줘야한다. 앱이 실행되자마자 크래쉬가 된다.

# Error

Google Ad Manager publishers, follow instructions here: https://googlemobileadssdk.page.link/ad-manager-ios-update-plist

위 문구를 찾아보았다.

//https://stackoverflow.com/questions/55577811/xcode-error-when-added-admob-plugin-to-ionic-project

 

info.Plist 에 GADIsAdManagerApp 를 추가하고 Boolean 값으로 YES로 설정해주면 된다.

 

반응형
반응형

아이폰에서 동영상을 편집 후 원본 파일이 사라지고 편집된 파일만 보여진다.

당황하지말고 다시 편집 모드로 들어가 보자.

 

복귀 버튼이 보일 것이다.

복귀 버튼을 터치

 

원본으로 복귀

 

쉽게 해결 가능하다.

 

반응형
반응형

아이폰에서 garageBand를 이용하여 벨소리는 만들었지만 지울수가 없었다.

garabeBand 내에서 삭제할 수 있다고는 하는데,

그것은 어디까지나 garabeBand에서 만들었을 경우에만 해당 될 것으로 생각된다.

 

아이폰내에서는 삭제할 수가 없었으나 아래와 같은 방법으로 삭제 할 수 있었다.

 

1. iFunBox 다운로드(http://www.i-funbox.com/en_download.html) 및 설치

2. 아이폰과 연결

3. Raw File System > Purchases

4. Ringtones.plist 를 열어 각 리스트를 펼쳐보면, 자신이 만든 벨소리를 확인 할 수 있다.

 Name을 확인한 후에 import로 시작하는 파일명을 확인한다.

5. 위 해당 목록과 파일명을 삭제해주면 된다.

반응형
반응형

UIView를 반투명하려면 opacity를 사용한다.

let background = UIView()

background.layer.backgroundColor = UIColor.black.cgColor

background.layer.opacity = 0.5 


하지만 이 뷰안에 다른 레이블이 포함되었을 경우, 포함된 레이블도 같이 투명하게 되는 경우가 있다.

let background = UIView()

background.layer.backgroundColor = UIColor.black.cgColor

background.layer.opacity = 0.5

let title = UILabel()

backgroud.addSubview(title)


이럴 경우 이렇게 해보자

let background = UIView()

background.layer.backgroundColor = (UIColor.black.cgColor).copy(alpha: 0.5)

let title = UILabel()

background.addSubview(title)


반응형
반응형

        // 저장할때는 동일하다.

        UserDefaults.standard.set(5, forKey:"num")

        

        // 불러올 때

        UserDefaults.standard.integer(forKey: "num")


반응형
반응형

        let taskText = "All Tasks (task)"

        let attributed = NSMutableAttributedString(string: taskText)

        let strokeTextAttributes = [

//            NSAttributedString.Key.strokeColor : UIColor.black,

            NSAttributedString.Key.foregroundColor : UIColor.black,

//            NSAttributedString.Key.strokeWidth : 2.0,

            NSAttributedString.Key.font : UIFont.boldSystemFont(ofSize: 18)

            ] as [NSAttributedString.Key : Any]

        

        attributed.addAttributes(strokeTextAttributes, range: (taskText as NSString).range(of: "(task)"))

        titleLabel.attributedText = attributed



반응형
반응형

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

        // Override point for customization after application launch.

        UINavigationBar.appearance().barTintColor = UIColor.white//.init(red: 23.0/255, green: 197.0/255, blue: 157.0/255, alpha: 1.0)

        

        // To change colour of tappable items.

        UINavigationBar.appearance().tintColor = .black

        

        // To apply textAttributes to title i.e. colour, font etc.

        UINavigationBar.appearance().titleTextAttributes = [.foregroundColor : UIColor.black, .font : UIFont.init(name: "AvenirNext-DemiBold", size: 22.0)!]

        

        // To control navigation bar's translucency.

        UINavigationBar.appearance().isTranslucent = false


        return true

    }


반응형
반응형

override func viewDidLoad() {

        super.viewDidLoad()

        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)

        self.navigationController?.navigationBar.shadowImage = UIImage()

}


반응형
반응형

이미지를 클릭 하시면 다운로드 받으실 수 있습니다.

유아색칠놀이



이제 막 걸음마를 배우는 우리 아이에게 재미있는 어플을 소개 해 드리겠습니다.

아주아주 단순한 어플입니다.

특별한 기능도 없고, 손가락으로 쓱쓱싹싹 문질러주기만 하면, 그림이 완성된답니다.


단순하지만, 아이에게는 신기한 어플이 아닐까 생각됩니다.




유아색칠놀이 메인 화면입니다.

첫번째는 랜덤, 두번째는 이미지 선택 세번째는 설정으로 총 3개의 버튼이 있습니다.




  

기본적으로 68개의 이미지를 선택 할 수 있습니다.

그리고 추가적으로 내 사진에서도 선택할 수도 있습니다.




이것이 색칠을 하는 화면입니다.

첫화면에서 첫번째와 두번째 버튼을 눌렀을 때 나오는 화면이고,

랜덤을 선택 하였을 경우에는 색칠이 완료 되었을 때 쯤, 다음 그림으로 자동으로 넘어갑니다.

(이미지 10개까지)

위 이미지는 부분적으로 쓱쓱싹싹 문지른 상태입니다.




설정 화면입니다.

첫 번째 버튼은 스케치 모드와 흑백모드를 디폴트로 설정할 수 있습니다.

아래 이미지는 스케치와 흑백 모드에 따른 보여지는 화면입니다.




.

.

.


다음 


연필모양 버튼은 디폴트로 브러쉬 크기를 설정할 수 있습니다.

일회성으로 게임중에서도 선택할 수 있습니다.





세번째 카트모양의 버튼은 기본 68개의 이미지 외 새로운 이미지를 추가 할 수 있습니다.

다만 광고를 시청 후에 3개의 이미지를 다운받을 수가 있습니다.






불필요한 광고라고 생각하시겠지만, 

개인 개발자들의 광고는 앱을 유지보수 하는데 많은 도움이 될 수 있습니다.

이 점 깊은 양해 부탁드립니다.





개발자의 말!


제목에서 보셨듯이, 해당 앱이 색칠이 아닐 수도 있습니다.

손가락으로 문지르면 색이 보여지는 게 하는 것이 색칠 하는 것과 같다고 판단하였습니다.


이제 막 걸음마를 배우는 아이들이 쉽게 접할 수 있을 것 같습니다.



변화해야한다는 점이 많다고 생각합니다.

향후 계획은 정말 색칠되는 것처럼 보여주는 것이 개인적인 목표입니다.


반응형

'Introduction to the applications' 카테고리의 다른 글

KidsTube Privacy policy  (0) 2020.07.07
키즈튜브 개인정보처리방침  (0) 2020.07.07
Privacy policy  (0) 2018.10.09
개인정보처리방침  (0) 2018.10.03
[iOS] QR코드!! 읽고 쓰기를 동시에?  (0) 2018.09.28
반응형

We do our best to protect users' personal information in accordance with relevant laws and personal information handling policies.

 

1.Purpose of collecting and using personal information

-There is no personal information stored in the app.

-It includes an advertising program (AdMob), and the privacy policy can be found at https://policies.google.com/privacy?hl=en

-We use Google Analytics to improve the service, and the following information may be collected through Google Analytics. (App installation, deletion, update event / Device type and operating system used / App event location, gender, age, funnel path)

-Google Analytics Terms of Service: http://www.google.com/analytics/terms/us.html

-Google Privacy Policy: http://www.google.com/intl/en/policies/privacy/

 

2. Period of retention and use of personal information

-We do not hold and use personal information.

-You can check the privacy policy of Admob and Google Analytics for advertising and service improvement at https://policies.google.com/privacy?hl=en.

 

3. Procedure and method of destruction of personal information

We do not collect, use, or hold personal information.

-Admob, Google Analytics: https://policies.google.com/technologies/retention?hl=en

 

4. Sharing personal information and providing it to a third party

Admob, Google Analytics

 -Purpose of using personal information of the recipient: Providing customized services including contents and advertisements. https://policies.google.com/privacy?hl=en#whycollect

 -Personal information items provided: https://policies.google.com/privacy?hl=en#infocollect

 -Retention and use period of the recipient: https://policies.google.com/technologies/retention?hl=en

 

 

 

When there is a situation in which personal information is separately shared or provided with a third party for the provision of services,

This application is notified or consented to the user in advance according to the'Act on Promotion of Information and Communication Network Utilization and Information Protection, etc.' and the privacy policy.

반응형
반응형

 

 

관계 법령 및 개인정보 취급방침에 따라 사용자 개인정보 보호에 최선을 다합니다. 

 

1.개인정보의 수집 및 이용목적

- 앱에서 저장하는 개인정보 는 없습니다.

- 광고 프로그램(AdMob)을 포함하고 있으며, 개인정보처리방침은 https://policies.google.com/privacy?hl=ko 에서 확인하실 수 있습니다

- 서비스 개선을 위해 Google Analytics 를 사용하고 있으며, Google Analytics 를 통해 다음 정보를 수집할 수 있습니다. (앱 설치, 삭제, 업데이트 이벤트 / 사용 디바이스 기종 및 운영체제 / 앱 이벤트 위치, 성별, 연령, 유입경로)

- Google Analytics 서비스 약관 : http://www.google.com/analytics/terms/us.html

- Google 개인정보보호 정책 : http://www.google.com/intl/en/policies/privacy/

 

2.개인정보의 보유 및 이용기간

- 개인정보를 보유 및 이용하지 않습니다.

- 광고 및 서비스 개선을 위한  Admob과 Google Analytics의 개인정보처리방침은 https://policies.google.com/privacy?hl=ko 에서 확인하실 수 있습니다.

  

3.개인정보의 파기 절차 및 방법

개인정보를 수집, 이용, 보유하지 않습니다.

- Admob, Google Analytics  : https://policies.google.com/technologies/retention?hl=ko

 

4.개인정보 공유 및 제3자 제공

Admob, Google Analytics

 - 제공받는 자의 개인정보 이용목적 : 콘텐츠와 광고를 포함한 맞춤 서비스 제공. https://policies.google.com/privacy?hl=ko#whycollect

 - 제공하는 개인정보 항목 : https://policies.google.com/privacy?hl=ko#infocollect

 - 제공받는 자의 보유․이용기간 : https://policies.google.com/technologies/retention?hl=ko

 

서비스의 제공을 위해 별도로 타사와 개인정보를 공유하거나 제공할 상황이 발생할 경우,

본 어플리케이션은 '정보통신망 이용촉진 및 정보보호 등에 관한 법률'및  개인정보 취급방침에 따라 사용자에게 사전에 고지하거나 동의를 받습니다.






반응형
반응형

이미지를 클릭 하시면 다운로드 받으실 수 있습니다.


QR코드기




"QR코드기" 앱은 읽기 쓰기를 하나의 앱에서 가능합니다.

아쉽지만 iOS에서만 지원을 합니다.



한번 사용법을 알아볼까요?





앱을 실행하면 카메라가 켜지고, 코드를 인식할 수 있습니다.

화면 상단 버튼을 누르면 저장된 이미지를 불러와 읽을 수 도 있습니다.






QR코드 주위에 초록색 테두리가 생기는 동시에 브라우저로 이동합니다.






 브라우저로 이동한 모습입니다.





텍스트를 입력 후, 만들기 버튼을 누르면 코드가 생성됩니다.

앗! 여기서 키보드가 활성화되면, 만들기 버튼이 사라집니다.

입력 후에 다시 아무곳이나 터치를 하면 키보드가 사라져서 버튼이 보여지게 되요!






생성된 코드는 우측상단 버튼을 클릭하면 쉽게 공유도 가능합니다.







사용된 코드 내역을 관리를 할 수 있어, 재사용 할 수도 있습니다.





개발자의 말!




iOS11 부터 기본 카메라에서 QR코드를 인식할 수 있게 되었습니다.



사용자 입장에서는 불필요한 앱을 설치하지 않아, 유용하게 쓰일 것이지만,

반대로 개발자 입장에서 본다면 점점 입지가 좁아지게 되는 것 같습니다.

힘들게 만든 나의 앱이 소외 될 수밖에 없으니 참 슬픈 현실 같습니다.


저와 같은 개인 개발자인 경우는

새로운 것을 만들기에는 더 많은 시간과 노력이 필요 할 수도 있습니다.ㅠㅠ

(맨땅에 헤딩이 너무 힘듭니다. ㅎㅎㅎ)



저는 이런 사항들을 알았지만, 그래도 개발을 하게 되었습니다.

코드를 리더할 수 있는 앱을 만들었다기 보다는

QR코드를 생성하고 이력을 남겨 재활용할 수 있게 만드는 것이 저의 개발 계획이였습니다.



QR코드와 관련된 뛰어난 앱들이 많이 존재합니다.

"QR코드기" 앱이 좋은 앱들 속해서, 열심히 분발 할 수 있도록

아무쪼록 많은 이용 부탁드리겠습니다.


감사합니다.

반응형
반응형


이미지를 클릭 하시면 다운로드 받으실 수 있습니다.

월광보합조회



요즘 (?) 월광보합 게임기 유저분들에게 사용하시는데 있어서,

조금이라도 보탬이 되고자 앱 하나를 소개 시켜 드리고자 합니다.


게임 리스트가 가나다 순 정렬도 아니고, 검색도 되지 않아 게임 찾는데

불편한 분들이 있으실거라 생각됩니다. 필자 또한 그런 사람 중 한명입니다.

그래서 제가 개발을 하게 되었습니다.


앱스토어에서 월광 또는 보합이라 조회를 하시면,

“월광보합조회”라는 앱이 있습니다.

아쉽지만 iOS 기기만 지원을 하고 있습니다.


단순한 앱이지만,

번호를 기억해야하는 불편함만은 해소될 수 있을 것으로 생각되어집니다.







어떤 앱인지 한번 확인 해 볼까요?






게임명을 적어서 검색을 합니다.






결과가 나오면, 원하는 게임을 터치하시고 등록을 하면 됩니다.






즐겨찾기 탭을 눌러보면, 등록한 게임 리스트가 번호와 함께 나옵니다.






다시 해당 게임을 클릭하면 삭제할 수도 있습니다.






3 가지의 게임리스트가 존재하며,

보유하고 계신 게임기의 리스트를 선택하여 조회하시면 됩니다.





다운로드는 본 페이지 최상단 아이콘 이미지를 클릭해 주세요.






개발자의 말!


월광보합5s 를 구매하여 재미있게 게임을 즐기고 있는 1인 입니다.


게임을 하면서 불편한 점이 있었는데, 그것은 검색이 안된다는 점입니다.

늘 하던 게임은 번호를 기억해야 하고, 내가 원하는 게임이 어디있는지 찾을 수가 없습니다.

그렇다고 가나다 순으로 정렬이 되어 있지도 않아, 번호를 하나하나 확인을 해야합니다.

구글링을 하면, 즐겨찾기 등록하는 방법이 있습니다.

잘 된다는 분들도 있지만, 따라 해본 결과 저는 실패하였습니다.



게임 번호를 기억해야하는 불편함만은 해소하자는 취지로

가볍게 개발을 시작 하였지만, 생각처럼 쉽지는 않았습니다.

정보 제약으로 게임 리스트가 다소 부족합니다.

해당 정보 또한 직접 타이핑 하여 만들게 된 정보이니,

오타가 있어도 너그럽게 이해해 주시고,

앱스토어나 본 블로그의 방명록에 제보 해주시면 감사하겠습니다.



월광보합 게임기는 점점 업그레이드 버전이 나오면서 이런점들이 해결 될 거라 생각됩니다.

개개인마다 본 앱이 필요가 없을 수도 있겠지만

현재 제가 가지고 있는 버전은 이미 업그레이드도 할 수 없는 상황이고,

앞으로도 이렇게 써야하기 때문에

저와 같은 기종을 가지고 계신분들에게 유용한 어플이 아닐까 생각됩니다.


많은 이용 부탁드립니다.

감사합니다.





반응형
반응형

사실 이게 무엇인지 모른다.

다만 추측하건데, 이미지의 색상을 지원하는 포맷이랄까?

RGB 또는 256 컬러 이런게 업그레이드 되어 색상을 얼마나 지원줄 수있는지의 설정값 같다.



1. 어떻게 알았는가?


collectinView 에 저장된 이미지를 보여주기 위해 구현 하였다.

ipad 시뮬레이터에서만 이미지가 부분적으로 보여지고 있었다.

iphone 에서는 잘되는 것이 pad 에서만 안되고 있으니, 미치고 팔짝 뛸 노릇이였다.


보여지는 이미지와 보여지지 않는 이미지를 비교를 해보았다.

Xcode에서 아래와 같이 보여졌다.


- 보여지는 이미지


- 보여지지 않는 이미지



위 두 개의 이미지를 비교했을 때  Color Space가 유독 눈에 들어온다.

sRGB  와 Apple Wide Color

Apple Wide Color는 무엇인가? ㅠㅠ

아무튼 해결 방법은 Apple Wide Color를 sRGB로 바꿔주면 되는 거 아닌가



2.해결

1.기본 사진 어플리케이션에 이미지를 넣어준다.

2.해당 이미지를 선택하고 command + shift + E 를 누르면 아래와 같이 나온다.



3. 색상프로파일을 선택하고, sRGB로 선택하고 내보내기를 누르면 바뀐형식의 이미지 파일 생성된다.

4. 생성된 파일을 올리고 컴파일을 해보면 정상적으로 작동된다.



3.결론

그리고 왠지 모르게 sRGB보다 apple wide color 가 더 색을 많이 지원해 줄 것 같다는 생각이들었다.

그런데 apple wide color 인데 apple꺼인 xcode에서 지원이 안된다는 것은 좀 이상하지 않은가


구글링을 해본 결과, xcode 버그 일것 같다는 의견들이 많았다.

나도 그냥 이렇게 생각하고 싶다.

반응형
반응형


키보드가 활성화 될 때 하단 부분은 가려지게 될 것이다.

반드시 보여져야 하는 레이어들이라면 키보드 위로 올려서 보여질 수 있게 해보자.

let inputTyping = UITextView()

let buttonExecution = UIButton()

override func viewDidLoad() {

    super.viewDidLoad()

    let tap:UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.dismissKeyboard))

    self.view.addGestureRecognizer(tap)

    NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardShow), name: NSNotification.Name.UIKeyboardWillShow, object: nil)

    NotificationCenter.default.addObserver(self, selector: #selector(self.keyboardHide), name: NSNotification.Name.UIKeyboardWillHide, object: nil)

}

@objc func dismissKeyboard() {

    self.view.endEditing(true)

}

@objc func keyboardShow(notification: NSNotification) {

        if let keyboardSize = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {

            if self.view.frame.origin.y == 0 {

                self.view.frame.origin.y -= keyboardSize.height

                self. inputTyping.frame.origin.y -= keyboardSize.height

                self. buttonExecution.frame.origin.y -= keyboardSize.height

        }

    }

}

@objc func keyboardHide(notification: NSNotification) {

    if let keyboardSize = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {

        if self.view.frame.origin.y != 0 {

            self.view.frame.origin.y += keyboardSize.height

             self. inputTyping.frame.origin.y += keyboardSize.height

            self. buttonExecution.frame.origin.y += keyboardSize.height

        }

    }



나의 삽질은 어디까지 인 것인가?


화면의 반을 차지하는 imageView, 그 아래 textView, 그 아래 button 이 위치하도록 구현을 하였다.

여기서 내가 원하던 것은 키보드가 활성화 될 때 일부로 버튼이 보여지지 않게 하고 imageView 와 textView 창만 올라가게 끔 하려고 했다.

물론 위 소스와 동일하게 했을 시 잘 올라간다.

여기서 더 욕심을 내서 textView를 키보드 바로 위로 맞춰서 하는게 나의 목표였다.

이해가 되질 않는다면 아래 그림을 보면 될 것이다.



그런데....

키보드 바로 위로 textView를 맞춰지지 않는 것이다.

키보드에 가려져 보이지 않거나, 반만 보이거나, 너무 위로 올라가서 키보드와의 간격이 넓어지거나

온갖(?) 방법을 다 해보았다.

온갖 방법이란 내 머리속의 수학 아닌 산수를 동원하여, 위치값까지 하나하나 찾아가고,

"일단 키보드가 바라보는 디바이스의 위치값과 뷰안에 존재하는 위치값은 다를 수 있지!!" 라며

말이 되는 가설과 말도 안되는 가정들을 노트에 수십번을 적어가며

계산하고 계산하였다.


이렇게 구구절절 얘기하는 것은 그만큼 삽질을 많이 했다는 얘기이다.

결국에는 내가 세운 계산법으로는 해내지 못하였다.


포기하고 버튼도 위로 올려버렸다.

위 소스에서 한줄만 더 추가하면 된다.

소스의 파란색 글씨가 그것이다.

1. keyboardShow => self. buttonExecution.frame.origin.y -= keyboardSize.height

2. keyboardHide => self. buttonExecution.frame.origin.y += keyboardSize.height  


허무하게 이 한줄을 넣고 시뮬레이션을 돌리는 순간.

유레카!!!!


이 한줄 추가하면서 모든게 제대로 잘 보여지는데,

아래 버튼 사이즈만 내려볼까?

라는 생각이 들어버렸다.


되면 당연히 좋지만, 한편으로는 엄청 허무할 것 같다는 생각이 들었다.

성공

@objc func keyboardShow(notification: NSNotification) {

        if let keyboardSize = (notification.userInfo?[UIKeyboardFrameEndUserInfoKey] as? NSValue)?.cgRectValue {

            let keyboardResize = keyboardSize.height - createButton.frame.height

            if self.view.frame.origin.y == 0 {

                self.view.frame.origin.y -= keyboardResize

                self. textView.frame.origin.y -= keyboardResize

        }

    }

}


성공은 했지만, 버튼을 위로 올리는 것이 나을 것 같아서 적용은 하지 않았다.

추후에 적용할 일이 생기면 참고하기 위해서 이렇게 글로 남겨 놓는다.

매번 느끼는 것이지만 항상 허무한 결론이다.


참고 URL

https://stackoverflow.com/questions/26070242/move-view-with-keyboard-using-swift


반응형
반응형

1. 이미지 사이즈

https://developer.apple.com/ios/human-interface-guidelines/icons-and-images/custom-icons/

필자는 25사이즈로 한다.

참고로 이미지는 png 확장자를 사용하며, 투명바탕에 흰색 이미지를 사용하는 것이 좋은 것 같다.


2. 탭바 선택하였을 때 이미지가 변화되도록 하려면



반응형
반응형

언제부터인지 몰라도 갑자기 크롬 브라우저에서 jqplot 차트를 이미지화 시켜 엑셀파일에 저장해 놓은 소스가 작동이 안되고 메모리가 부족하다는 이미지만 계속 내뿜고 있었다.


처음에는 몰랐다. 그래서 원인을 찾는데도 한참 걸렸다.

파폭, IE에서는 무난하게 잘되고 있었고 유독 크롬만 이런 것이다.


브라우저 문제라고 판단하였지만, 쉽게 해결 되지는 않았다.


쿼리가 문제가 있나 싶어서 온갖 튜닝을 해봤지만, 결과는 똑같았고

결국에 jqplot이 문제라는 것을 알았다.


이 중에서 출력된 jqplot 차트를 이미지화 시키는 부분이 문제라는 것도 나중에 알게되었다.


이제 이것을 해결 하기 위해 많은 것을 파헤치기 시작했다.


결론은 아래 파일을 추가해주고, head 에 jqplot과 관련 된 곳에 추가적으로 지정해 두었다. 해결하였다.

jqplot.toImage.js


<head>

        <script src="./jqplot/plugins/jqplot........"></script>

<script src="./jqplot/plugins/jqplot.toImage.js"></script>

</head>



아래 URL은 확실하게 참고한 URL이다.

https://stackoverflow.com/questions/12182598/jqplot-as-image

https://bitbucket.org/ef4/jqplot/src/a59e7e7a5e97ea721a7b8571612b334e8c025b36/src/jqplot.toImage.js?at=default&fileviewer=file-view-default








반응형

'Programming > JavaScript' 카테고리의 다른 글

브라우저 창 크기에 따른 변화  (0) 2017.08.08
특정 태그 제외  (0) 2017.06.14
javascript 에서 replaceAll  (0) 2015.10.23
반응형

1. 사파리에서 udid.io 주소로 이동한다.


2. Tap to find UDID 를 탭한다.


3.설치버튼을 누른다.



반응형
반응형

mac에 설치되어 있는 itunes가 12.7로 업데이트 되면서, iPhone | iPad 에서 사용되는 appStore 사용이 중지 되었다.

언제부터인가 app이 검색이 안되서 내컴터만 이런 것인지 설치가 잘못된 것인지 답답할 따름이였다.


https://support.apple.com/en-us/HT208075




반응형
반응형

시뮬레이터를 하는 아래와 같은 메세지로 인해 다운이 되었다.


libsystem_kernel.dylib`__abort_with_payload: 


내가 사용할 것은 UIImagePicker이다.

엄청 난 삽질 끝에 알아낸 사실은 Info.plist에 추가해 줘야한다는 것을 깜빡 잊고 있었다.

Privacy - Photo Library Usage Description 


반응형

+ Recent posts