2013 이전/iOS개발

[iOS 개발] 간단한 animation 처리

hagulu 하구루2017. 2. 25. 16:20

iOS를 통한 개발에 animation은 꽤나 중요한 부분이다.

 
iOS 특성상 부드러운 animation이 앱을 좀더 고급스럽게 만들어 주는데
iOS를 이를 위해 아주 간단하게 animation을 쉽게 구현할수 있도록 해 놓았다.
animation 전과 후의 View의 상태만 정해주면 그이외의 작업들은 모두 알아서 해준다.
예제 코드를 보면서 설명을 해 보겠다.
      CGRect rect = targetView.frame;
rect.origin.x = 300;
targetView.frame = rect;
        
[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:0.3];
[UIView setAnimationRepeatCount:1];

rect = targetView.frame;
rect.origin.x = 0;
targetView.frame = rect;
        
[UIView commitAnimations];

위 의 예제대로 수행을 하면 해당하는 targerView는 x좌표 300의 위치에서 x좌표 0의 위치로 자연스럽게 animation이 변화 하게 된다.

 CGRect에 대한 설명은 따로 하지 않겠다.
 animation을 시켜주는 부분이 중요하다.
 [UIView beginAnimations:nil context:nil]; 

해당 부분은에서 주목해야할 부분은 첫번째 파라 미터이다.

나중에 delegate를 통해서 animation이 시작하거나 끝나는 때에 여러 작업을 할때
각기 다른 animation들을 구분하는데 이용된다. 일종의 animation key이다.
       [UIView setAnimationDuration:0.3];
        [UIView setAnimationRepeatCount:1];

위의 첫번째 메소드는 animation이 진행되는 시작이다 이를 길게 하면 animation 이 느려지고 짧게 하면 animation이 빨라 진다.

두번쨰 라인의 메소드는 보이는 그대로 반복 횟수이다. 해당 animation이 몇번 반복될지 설정해 주는 것이다.
     [UIView commitAnimations];

마지막으로 animation을 마무리 지어 주도록 하는 메소드이다.


이를 해주지 않으면 이후의 모든 frame등의 변화가 animation되는 경의로운 현상을 보게 될것이다.

 재미 삼아 한번 확인해 보는것을 추천한다.

이를 이용해 view의 alpha 값으로 fade 효과도 이용할수 있으며

CGRect를 잘활용하여 위치나 크기 등을 animation으로 쉽게 이용 가능하다.


댓글

댓글쓰기 폼

2013 이전/iOS개발

[iOS 개발] UITableView 기본 delegate, datasource

hagulu 하구루2017. 2. 25. 16:19

UITableView 를 사용하다 보면 항상 기본적인 delegate와 datasource의 소스들을 다른 소스에서 긁어서 쓰고 있다.

이참에 항상 쓰는 소스만 정리해서 올려 놓으려고 한다.
#pragma mark -
#pragma mark tableview delegate

// 섹션의 갯수
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    // Return the number of sections.
    
    return 1;
}

// 각 섹션당 로우의 갯수
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    // Return the number of rows in the section.
    
    return 5;
    
}

// 각 셀 그리기
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    
    static NSString *CellIdentifier = @"CalendarCell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
        
            
    }
    
    
    return cell;
}


// 셀이 선택 되었을때 수행할 내용 
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    
     
}


// 각셀의 높이 
-(CGFloat) tableView : (UITableView *) tableView heightForRowAtIndexPath : (NSIndexPath *)indexPath{
    
    return 45;    
}


댓글

댓글쓰기 폼

2013 이전/iOS개발

[iOS 개발] iCloud app 연동 설정

hagulu 하구루2017. 2. 25. 16:19

앱내의 셋팅 기능에서 많이 사용할 수 있는 간단한 iCould 연동을 소개 해보겠다.


오늘 포스팅할내용은 iCloud 연동을 위한 기본적인 설정 방법에대해서 알아 본다.

iCould를 앱에서 이용할수 있는 것은 아래와 그림과 같이 Document Storage와 keyValue Data Strorage 두종류 이다.






Document Storage는 직접 파일을 저장하고 이를 로드할수 있도록 사용이 가능하고, 사용자의 iCloud용량이 다 찰때까지 이용할 수 있다. 앱에 따른 제한은 없다.

keyValue Data Strorage는 간단하게 NSUserDefault와 비슷한 방식으로 사용이 가능하고, 1M와 1024개의 키로 제한이 있다.

좀더 자세한 정보를 원한다면 애플 공식 페이지 가이드
를 참고 하기 바란다.

이제 iCloud를 쓰기위한 준비단계부터 시작하겠다 일단 먼저 App ID 설정에서 iCloud를 활성화 해주어야 한다.
developer 페이지에서 Provisioning Portal 메뉴의 App IDs 메뉴로 가서 해당하는 app ID 에 위에 보는것처럼 iCloud가 Enabled되도록 configure를 수정해 주어야 한다.




해당하는 내용을 수정을 하였으면 적용이 되어 있는 Provisioning 파일도 새로 받아서 이를 이용해서 개발해야 한다.

이제 프로젝트에 추가를 해주어야 한다.

먼저 해당 Targets 의 Summary의 Entitlements 항목을 아래와 같이 수정해 주어야 한다.






 위와 같이 해당 사항을 체크해주고

iCloud에서 이용될 id를 만들어 주어야 한다.

여기서 id가 중요한데, 유니버셜 앱의 경우 상관이 없지만,
따로 배포되는 lite 버젼의 앱이나, 아이폰과 아이패드 가 다른 앱으로 배포 되는경우
각각의 bundle ID와 같은 id를 사용하면 이를 이용해 싱크를 할수가 없다.

그렇기 때문에 여기에 사용되는 ID는 iCloud로 싱크될 모든 앱들이 같은 ID를 이용해야 한다.

그리고 위에서 iCloud를 설정한 App ID와도 호환이 되어야 한다.

어떤 개발이든 설정이 가장 많은 말썽을 부리니 차근차근 확인해가면서 설정해나가기를 바란다.




이를 셋팅하면 자동으로 entitlemments 파일이 생성되고 내용이 적용된다.

이로써 기본적인 설정은 모두 마쳤다.

여기 까지 하고 앱이 디바이스로 올라가면 제대로 진행되것이다.

그외에 에러가 발생한다면, App ID 와 프로파일등의 문제일 수 있으니 처음 부터 차근차근 확인해 보기 바란다.


다음에는 간단하게 keyValue Data Strorage 를 이용한 iCloud 에대해서 포스팅 해보겠다.



댓글

댓글쓰기 폼

2013 이전/iOS개발

[iOS 개발] NSArray 역순으로 변환

hagulu 하구루2017. 2. 25. 16:16

NSArray의 Value들을 역순으로 정렬할때 다음과 같이 하면된다.

 
[[array reverseObjectEnumerator] allObjects]
reverseObjectEnumerator 라는 메소드를 통해서 역순이 된 array의 NSEnumerator 객체를 얻게 되고
여기서 부터 allObjects를 통해서 해당 array를 얻게 된다.


댓글

댓글쓰기 폼

2013 이전/기타

iOS6의 화려한 변신은 국내 사용자에겐 그림의 떡(?)

hagulu 하구루2017. 2. 25. 16:15

 한국시간 9월 20일 iOS6가 정식 출시 되었다.
그에 맞추어 전에 썼던 글을 수정해 보았다.
베타 때와 달라진점과 그래도 여전히 부족한 점에 대해 중점적으로 소개해 보겠다.


이번 iOS6에서 중점적인 부분은 구글 맵을 버리고 새롭게 도입한 맵과 좀 더 다양한 기능이 추가된 시리 이다.

먼저 맵, 발표할때만 보더라도 우와~ 우와~ 하면서 보았다. 3D형식의 일반 맵과 FlyOver라는 심시티 스러운 뷰들이 놀라울 다름이었다. 더군다나 tomtom의 네비게이션 기능까지 추가되어 화려하고 완벽한 지도앱으로 탈바꿈 되었다.


베타 때보다는 생각 보다는 많은 것이 지원되었다. 일단 독도! 가 제대로 표현이 되었고, 턴바이턴 네이게이션이 국내에서 동작을하고, 도로명과 상호가 한글화 되었다.

 하지만, 아직도 세세한 골목길같은 길이 표시가 미흡하고, 특히 지방의 경우는 그 정도가 심각하다. 그리고 건물들의 표시가 전혀 되어 있지 않아서 보기에 불편하다. flyover 기능은 전보다 더 악화 되었다. 확대비율이 현저하게 줄어서 위성 지도는 사용하기 조차 힘들어 졌다. 또한, 턴바이턴 네비게이션은 간결하기는 하지만 국내 네비게이션 앱에 길들여진 사용자들에게는 불편하게 다가올 것이다.

앞으로 지도가 좀더 상세하게 되길 바랄 뿐이다.


        







이덕에 다음맵과 네이버 맵의 사용률이 좀더 많이 높아질 것으로 보인다.
기본 맵을 사용하는 앱들은 머리가 아파질 문제이다.


 다음은 시리,
 드디어 고대하던 한국어 지원이 들어 왔다. 내가 밤잠을 설쳐가면서 이번 WWDC를 지켜 본 이유도 이 기능에 대한 기대 때문이었다. 게다가 시리는 업데이트 되어서 좀더 많은 정보를 시리를 통해서 얻을 수 있게 되었다. 스포츠 스코어를 확인한다던가, 선수의 정보를 찾고 비교 한다던지, 영화 시간표, 영화 정보, 예매등을 시리로 손쉽게 확인 할수 있게 되었다. 또한 yelp를 통해서 레스토랑 정보를 얻고 예약 까지 가능하다고 한다. 위에 설명한 새로운 맵의 네비게이션 기능 또한 시리로 이용 가능하다. 참으로 반가운 소식이 아닐수 없었다.





 하지만!
 이 역시 시리의 기능은 제한적 일수 밖에 없다. 이번에 새롭게 지원되는 기능들이 모두 미국의 중심으로 이루어진 내용들이다. 국내에서는 사용할 수 없는 정보들이다. 기대를 많이 한것인지 생각보다 말을 못 알아 듣고, 억양에 따른 질문과 명령을 구분하지 못하는것으로 보였다. 베타때 보다는 좀더 나아진 것을 보였지만, 그래도 아직 인식의 문제가 심하다. 특히, 시리는 음성을 곧이 곧대로 변환하는게 아니고, 명령과 유사한 발음일경우 그 명령으로 교체하여 해석한다. 즉 인식률을 높이기위한 방법인데, 한국어의 경우 아직 제대로 자리잡지를 못한 상황이라 도리어 이때문에 인식률이 더 떨어진다. 시리가 인공지능으로 계속 발전한다고 하니 많이 사용해서 인식률이 빨리 높아 졌으면 하는 바람이다.


 다음으로 passbook 이라는 전자 지갑 앱이 새로 생겼는다. 베타 때만 해도 이 서비스가 국내에 사용이 될까 했지만, 최근 http://mypassbook.co.kr 이라는 사이트가 생겨서 이 앱을 이용한 서비스를 준비 중이다. 거래처를 모집하고, 안드로이드도 사용할수 있도록 준비 단계인 것 같은데, 외면 받지 않고 활성화 되었으면 하는 바램이다.






 그외에 페이스타임이 와이파이 이외에서도 통화가 가능하도록 변경되었지만, 현재 국내 통신사들이 3G/4G를 이용한 통화에 매우 소극적이어서 제대로 이용될수 있을지는 의문이다.
 베타 때에 비해서 조금 나아 지긴 했지만 이번 iOS6는 특히 미국 위주의 업데이트가 많은것 같아서 안타까울 따름이다.


댓글

댓글쓰기 폼

2013 이전/기타

[클라우드 서비스] 클라우드 서비스별 장단점

hagulu 하구루2017. 2. 25. 16:09

오늘부로 소문만 무성했던 google Drive 서비스가 미국을 시작으로 본격적으로 시작되었다.

한국에 정식 서비스는 5월 3일 부터 시작된다고 한다.
덕분에 지금 https://drive.google.com/start 를 들어가면 404 Not Found 에러가 보여진다.
단, 방법이 있는데
google 계정으로 로그인 후에 언어를 영어로 설정해주면 페이지가 보여진다.
그랫더니 "Your Google Drive is not ready yet" 라는 메시지가 나와서 조용히 기다리는중....
내가 요녀석을 목빠지게 기다리는 이유는... 은근히~ 딱 맘에 드는 클라우드 서비스가 없다..
그래서 간단히 클라우드 서비스의 장단점을 다분히 주관적으로 정리해보려고 한다.

Drop box
세계적으로 가장 많은 사용자를 가지고 있는 클라우드 서비스 이다.
장점 - Mac OS, windows 클라이언트가 일반 디렉토리와 싱크가되어 사용이 편리하다.
현재 써본 iPad 앱중 직관성이 가장 뛰어나다.
iPad 앱 사용시에 다른 앱과 연동이 되어서 활용도가 높다.
단정 - 기본 무료 제공 용량이 2기가 밖에 되지 않는다.
한국에서 속도가 너무 느리다.

Sky Drive
MS 에서 만든 차세대 Windows 를 겨냥한 클라우드 서비스
장점 - Mac OS, windows 클라이언트가 일반 디렉토리와 싱크가되어 사용이 편리하다.
iPad 앱 사용시에 다른 앱과 연동이 되어서 활용도가 높다.
단정 - 최근 25GB에서 7GB로 기본 용량을 줄였다.
한국에서 속도가 너무 느리다.
UCloud
KT 에서 서비스하는 클라우드 서비스
장점 - KT 이용자는 50GB라는 큰용량을 제공해준다.
전송 속도가 빠르다.
단점 - PC용 클라이언트 사용이 불편하다.
로그인등 접속이 원할하지 못한경우가 있다.
iPad 앱에 다른 앱과 연동이 되지 않는다.

Daum Cloud

daum 에서 서비스하는 클라우드 서비스
장점 - Mac OS, windows 클라이언트가 일반 디렉토리와 싱크가되어 사용이 편리하다.
전송 속도가 빠르다
50GB라는 대용량을 무료 제공한다.
단점 - iPad 앱이 없다
iPhone 앱이 있지만 다른 앱과 연동이 되지 않는다.

N드라이브
Naver 에서 서비스하는 클라우드 서비스
장점 - 속도가 빠르다
30GB라는 대용량을 제공한다.
단점  - PC 클라이언트가 불편하다.
iPad 앱에 다른 앱과 연동이 되지 않는다.


주절 주절 몇가지를 정리해 보았는데,
외국 서비스는 플랫폼에 잘대응하고 사용이 편리한대신에, 외국 서비스라 전송속도가 느리고, 용량이 적다.
국내 서비스는 용량이 크고 속도가 빠른 대신에, 여러 플랫폼에 대응이 미흡한 점이 있다.
결론은 용량 크고 속도 빠르고 여러 플랫폼에 대응 하는 서비스가 필요하다 ㅠㅠ
그래서 구글에 용량이 좀 부족하더라도 기대를 걸어 보고 있는 상황이다.
정식적으로 한국에 서비스가 진행된다고 하니 속도도 어느정도 기대해 볼만하기 때문이다.
구글 특성상 플랫폼 지원도 깔끔하지 않을까 예상해 본다.
- 추가
구글이 최근 새로운 사용자 약관이 추가 되었는데 (아래 인용 참고)
그에 따르면, 사용자가 올린 컨텐츠에대한 권리를 구글또한 가지게 된다.
서비스의 질을 높이기위한 것이라고는 한데, 이런 방식을 처음 접한 사용자는 흠짓 놀랄만한 내용이다.
과연.. 어떻게 흘러갈지 궁금한 대목이다.
When you upload or otherwise submit content to our Services, you give Google (and those we work with) a worldwide licence to use, host, store, reproduce, modify, create derivative works (such as those resulting from translations, adaptations or other changes that we make so that your content works better with our Services), communicate, publish, publicly perform, publicly display and distribute such content. The rights that you grant in this licence are for the limited purpose of operating, promoting and improving our Services, and to develop new ones. This licence continues even if you stop using our Services (for example, for a business listing that you have added to Google Maps).(이번에 새롭게 만들어진 약관)


댓글

댓글쓰기 폼

2013 이전/iOS개발

[iPhone 개발] string 이 URL 형식인지 확인하기

hagulu 하구루2017. 2. 25. 16:08

어떤 string이 url인지 판별하는 방법은 여러가지가 있다.

 
하지만 대부분 http 와 같은 프로토콜을 꼭 포함 시켜야 하거나,
"adf.asdf.asdf" 등의 실제로 사용가능한 주소 형식이 아니더라도 주소로 판별되는 경우가 있다.
그래서 좀더 정확성 높은 방법을 찾다가
정규 표현식을 통한 방법 중에 괜찮은 방법을 찾앗고,  
여기에도 문제점이 있어서 수정해서 아래와 같이 사용해 보았다.

NSString *ptn = @"(((http|https)://)?([0-9a-z_-]+\\.)+(aero|asia|biz|cat|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|net|org|pro|tel|travel|ac|ad|ae|af|
ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|
cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cx|cy|cz|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|
gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|
jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mn|mn|mo|
mp|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|nom|pa|pe|pf|pg|ph|pk|pl|pm|pn|
pr|ps|pt|pw|py|qa|re|ra|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|th|tj|
tk|tl|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|zm|zw|arpa)
($|((:[0-9]+)?((\\/([~0-9a-zA-Z\\#\\+\\%@\\.\\/_-]+))?(\\?[0-9a-zA-Z\\+\\%@\\/&\\[\\];=_-]+)?)?)))";
    
NSRange range = [aStr rangeOfString:ptn options:NSRegularExpressionSearch];

위 정규 표현식의 중점은 .com .net 과 같은 정의되어 있는 것들만 포함이 되는것을 찾는것이다.
 보기 좋게 하기 위해 개행을 하였습니다. 사용할때는 개행을 제거하고 이용하시기 바랍니다.


댓글

댓글쓰기 폼

2013 이전/iOS개발

[iPhone 개발] AudioSessionAddPropertyListener 의 해제

hagulu 하구루2017. 2. 25. 16:08

audio session 을 사용하다보면


AudioSessionAddPropertyListener 를 통해서  리스너를 등록해서 사용하게 되는데,

이 리스너는 해제해주지 않으면 계속 해당 프로퍼티에 대해서 리스너를 유지하고 있다.

리스너를 등록한 객체가 release 되더라도, 리스너는 해제되지 않는다. 


명시적으로 해지를 해주어야 하는데



AudioSessionRemovePropertyListenerWithUserData

위 함수를 통해서 해제를 해주어야 한다.


AudioSessionAddPropertyListener 은 계속 추가되는 방식이기 때문에 콜백 함수대신에 NULL을 넣는 등의 방식으로는 해제가 되지 않고 위에 소개된 메소드를 통해서만 해지가 가능하다. 


사용법은 AudioSessionAddPropertyListener 와 모두 같은 파라미터를 넣어주면 된다.

AudioSessionAddPropertyListener를 사용할 수 있다면 쉽게 사용할 수 있을 것이다.


댓글

댓글쓰기 폼

2013 이전/iOS개발

[iPhone 개발] sqlite query 따옴표 처리

hagulu 하구루2017. 2. 25. 16:08

sqlite 를 이용해서 쿼리를 사용하다 보면 쿼리에서 스트링을 넣을때


SELECT TEST FROM TEST_TABLE WHERE TEST = 'string'

와 같이 따옴표 안에 string을 넣게 된다.

그런데 스트링에 따옴표를 추가하고 싶으면 어떻해야 할까?

당연히 \' 라고 생각을해서 스트링을 변환을 했더니 되지 않았다.

db를 잘 아시는 분들에게는 쉬운 답이겠지만, 찾아 보니 따옴표를 두개를 넣어 줘야 한다.

즉 'string' 이라는 string을 입력하고 싶으면


SELECT TEST FROM TEST_TABLE WHERE TEST = '''string'''

와 같이 처리해 주어야 한다.

 '''string'''

쌍따옴표가 아니라 모두 홑따옴표 입니다.


댓글

댓글쓰기 폼

2013 이전/iOS개발

[iPhone 개발] audiosession category 의 비밀

hagulu 하구루2017. 2. 25. 16:07

사운드를 나오게 하는 앱을 개발하다 보면

여러 sound와 관련된 문제에 봉착하게 되는데
여기에는 audiosession이 가지고있는  category에 기인하는 경우가 많다.

여기서 먼저 다루어볼 부분은 route 부분이다.
현재 iphone audiosession 에는
다음과 같은 category가 있다.
AVAudioSessionCategoryAmbient;
AVAudioSessionCategorySoloAmbient;
AVAudioSessionCategoryPlayback;
AVAudioSessionCategoryRecord;
AVAudioSessionCategoryPlayAndRecord;
AVAudioSessionCategoryAudioProcessing;
각각에 대한 좀더 구체적인 설명은 아래 링크를 참조 하기 바란다.
위에 링크에 나와 있는 특성에 따라 output route의 처리도 달라지는데 이 정의를 제대로 알지 못해서 고생을 했었다.
위 category중에서 output이 가능한것은
AVAudioSessionCategoryAmbient;
AVAudioSessionCategorySoloAmbient;
AVAudioSessionCategoryPlayback;
AVAudioSessionCategoryPlayAndRecord;
위 네가지 이다.
이때 소리가 기본적으로 speaker 로 소리가 나는것은
AVAudioSessionCategoryAmbient;
AVAudioSessionCategorySoloAmbient;
AVAudioSessionCategoryPlayback;
이고,
기본적으로 ear speaker를 통해서 소리가 나오는것은

AVAudioSessionCategoryPlayAndRecord;

이다.
ear speaker를 통해 음원을 재생해야 한다면 위 세가지를 통해서는 불가능하다 (내가 찾아본 범위 안에서)
일반적으로 음원이 재생되는 route를 변경하기 위해서는

        UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
        AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);

        UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_None;
        AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);

와 같은 방식으로 변경을 하게 되는데

kAudioSessionProperty_OverrideAudioRoute 에 set할수 있는 값은

kAudioSessionOverrideAudioRoute_None - 기본 재생 route

kAudioSessionOverrideAudioRoute_Speaker - speaker 
요 두가지 뿐이다.
그렇기 때문에 기본 재생이 speaker 인 위의 세가지를 통해서는 위 방법을 통해서 route를 바꿀수 있는 방법은 없다.
즉, voip와 같은 ear speaker 를 통해 기본적으로 소리가 나야 하는  앱을 만들기 위해서는  AVAudioSessionCategoryPlayAndRecord 를 꼭 이용해야 한다.


너무 당연한 답을 길게 쓴게 아닌가 갑자기 민망해 지려고 한다;;; ;


나 같이 헤매고 있는 어떠한 분에게 도움이 되었으면 한다.


댓글

댓글쓰기 폼

hagulu.com

.....

VISITED

Today : 2

Total : 179,450

Lately Comment