안드로이드 앱을 개발하다보면 푸시알림 기능이 필요한 부분이 존재합니다.

기존의 GCM(Google Cloud Messaging) 서비스가 대표적이었는데, 최근 구글에서 

Firebase를 인수, FCM(Firebase Cloud Messaging) 서비스를 무료로 제공하고 있습니다.

현재 알려진 바로는 2019년까지 GCM 서비스를 제공하고 이후에는 모든 프로그램을 

FCM 서비스로 변경하라고 하네요!

자 그럼 이제 본격적으로 FCM 서비스를 사용해 봅시다.

먼저 FCM 서비스를 사용하려면 Firebase Console에 접속해야합니다.


접속하기 ☜ 클릭!

Firebase Console에 접속하면 아래와 같은 화면이 등장합니다.



프로젝트 추가를 눌러봅시다.



다음과 같이 화면이 나오면 프로젝트 이름을 기입하고, 약관에 동의를 하면 프로젝트 

만들기 버튼이 활성화됩니다. 프로젝트 만들기 버튼을 눌러 프로젝트를 생성합시다.

프로젝트 생성이 완료되면 새로운 화면이 나오는데 우측에 카테고리를 보시면 다음과 

같습니다.



우측 카테고리 메뉴 중 성장 - Cloud Messaging 을 선택합니다.





위 화면에서 iOS(아이폰), 안드로이드 중 원하는 버튼을 선택합니다.

본 포스팅은 안드로이드 기준으로 작성되었기 때문에 안드로이드를 선택했습니다.



안드로이드를 선택하면 다음과 같이 Android 앱에 Firebase를 추가하라고 나옵니다.

Android 패키지 이름을 작성해야하는데, 여기서 패키지 이름은 안드로이드 프로젝트 

생성시 설정한 패키지 이름을 작성합니다.

만약 패키지 이름을 모르시는 분은 프로젝트를 켜고 MainActivity로 들어갑니다.



그럼 가장 위에 package라고 적힌 부분이 있습니다.

이 부분이 이 프로젝트의 패키지 명입니다.

해당 부분을 복사해서 붙여넣기합니다.

그리고 나머지는 선택사항이므로 빈 칸으로 남겨두고 앱등록을 눌러줍니다.


앱등록이 끝나면 구성파일을 다운로드받습니다.

다운로드 받은 google-services.json 파일을 아래 사진과 같이 app 프로젝트 아래에

붙여넣기합니다.



프로젝트 폴더의 build.gradle의 dependencies에는 다음과 같은 코드를 추가합니다.

classpath 'com.google.gms:google-services:4.0.1'



그리고 app 프로젝트의 build.gradle의 dependencies 내에 다음과 같이 추가합니다.


implementation 'com.google.firebase:firebase-messaging:12.0.1'



그리고 나서 Sync Now버튼을 꼭 눌러주도록 합시다!


위의 과정을 모두 따라하셨다면 아래와 같이 앱에 Firebase를 성공적으로 추가했다는

화면이 나옵니다.



그리고 다시 안드로이드 스튜디오 프로젝트로 돌아와서 java 폴더 아래 패키지 폴더에 

Java Class 두개를 만들어줍니다.



첫번째는 FirebaseInstanceIDService입니다. 다음과 같이 작성합니다.

* 클래스명을 동일하게 만들어주세요


import android.util.Log;

import com.google.firebase.iid.FirebaseInstanceId;

import com.google.firebase.iid.FirebaseInstanceIdService;



public class FirebaseInstanceIDService extends FirebaseInstanceIdService {

    private static final String TAG = "MyFirebaseInstanceIDService";


    @Override

    public void onTokenRefresh() {

        String refreshedToken = FirebaseInstanceId.getInstance().getToken();

        Log.d(TAG, "Refreshed token: " + refreshedToken);

        sendRegistrationToServer(refreshedToken);

    }


    private void sendRegistrationToServer(String token) {

    }

}


두번째는 FireBaseMessagingService입니다. 다음과 같이 작성합니다.

* 클래스명을 동일하게 만들어주세요


import android.app.NotificationChannel;

import android.app.NotificationManager;

import android.app.PendingIntent;

import android.content.Intent;

import android.media.RingtoneManager;

import android.net.Uri;

import android.os.Build;

import android.os.Vibrator;

import android.support.v4.app.NotificationCompat;

import android.util.Log;


import com.google.firebase.messaging.FirebaseMessagingService;

import com.google.firebase.messaging.RemoteMessage;


public class FireBaseMessagingService extends FirebaseMessagingService {

    private static final String TAG = "MyFirebaseMsgService";


    @Override

    public void onMessageReceived(RemoteMessage remoteMessage) {

        Log.d(TAG, "From: " + remoteMessage.getFrom());


        if (remoteMessage.getData().size() > 0) {

            Log.d(TAG, "Message data payload: " + remoteMessage.getData());


            if (true) {

            } else {

                handleNow();

            }

        }

        if (remoteMessage.getNotification() != null) {

            Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());

            sendNotification(remoteMessage.getNotification().getBody());

        }

    }

    private void handleNow() {

        Log.d(TAG, "Short lived task is done.");

    }


    private void sendNotification(String messageBody) {

        Intent intent = new Intent(this, MainActivity.class);

        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent,

                PendingIntent.FLAG_ONE_SHOT);


        String channelId = getString(R.string.default_notification_channel_id);

        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);

        NotificationCompat.Builder notificationBuilder =

                new NotificationCompat.Builder(this, channelId)

                        .setSmallIcon(R.mipmap.ic_launcher)

                        .setContentTitle("FCM Message")

                        .setContentText(messageBody)

                        .setAutoCancel(true)

                        .setSound(defaultSoundUri)

                        .setContentIntent(pendingIntent);


        NotificationManager notificationManager =

                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);


        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

            String channelName = getString(R.string.default_notification_channel_name);

            NotificationChannel channel = new NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_HIGH);

            notificationManager.createNotificationChannel(channel);

        }

        notificationManager.notify(0, notificationBuilder.build());

    }

}


위와 같이 클래스를 만들어주셨다면 AndroidManifest.xml로 이동합니다.

activity가 끝나는 부분 </activity> 바로 밑에 다음과 같이 작성합니다.




<service

    android:name=".FireBaseMessagingService">

    <intent-filter>

        <action android:name="com.google.firebase.MESSAGING_EVENT"/>

    </intent-filter>

</service>


<service

    android:name=".FirebaseInstanceIDService">

    <intent-filter>

        <action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>

    </intent-filter>

</service>


자 여기까지 안드로이드 프로젝트내 모든 설정이 끝났습니다.

이제 푸시알람이 제대로 가는지 확인해야겠죠?


다시 Firebase Console로 돌아갑니다. 새 메시지를 선택하고 다음과 같이 작성합니다.

메시지 내용을 작성하고 대상을 앱의 패키지를 선택합니다.

그리고 메시지보내기 버튼을 누르면!!



짠!

다음과 같이 상태 알림창에서 푸시 알림이 오는것을 확인 할 수 있습니다.



또한 안드로이드 프로젝트 Run 화면에서 Log에 찍히는걸 확인하실 수 있습니다.




이상 '안드로이드 FCM 푸시알림'에 대해 알아보았습니다.

질문 또는 오타나 잘못된 정보가 있는 경우 댓글로 달아주세요!

공감♡ 버튼을 눌러주시면 더욱 유용하고 좋은 포스팅으로 찾아 뵙겠습니다.








파이썬에서 튜플이란 쉼표로 구분 된 객체의 모음입니다.


말로만 들으면 리스트와 비슷하다고 생각 되시겠지만 엄연한 차이가 있습니다.


그중 가장 두드러진 차이점은 바로 다음과 같습니다.



☞ 튜플은 생성 후 요소의 값이나 튜플의 크기를 변경할 수 없다.


☞ 리스트는 요소의 값이나 리스트의 크기를 언제 어디서든 변경 할 수 있다.



그렇다면 각각의 컨테이너(또는 객체)들은 어디에 어떻게 사용될까요?


보통 리스트는 요소들의 개수나 내용이 명확하지 않는 경우에 주로 사용합니다.


반면에 튜플은 요소들의 개수와 내용이 명확하기 때문에 요소 각각의 인덱스는 중요한 의미를 가지죠.



튜플의 기본 사용법입니다.


★ 튜플 객체 선언하기 - 예제 코드


tuple1 = ()


print(tuple1) # () 출력


튜플의 요소들의 집합은 리스트의 대괄호 '[ ]' 대신 소괄호 '( )'를 사용합니다. 


또한 다음과 같이 선언할 수도 있습니다.


tuple1 = (1, 2)

tuple2 = 1, 2


print(tuple1) # (1, 2) 출력

print(tuple2) # (1, 2) 출력


위 예제 코드처럼 소괄호 '( )'를 사용하거나 사용하지 않고 선언할 수 있습니다.


* 단 단일요소(요소가 1개)인 경우에는 ,(콤마)를 사용해야 튜플로 선언할 수 있습니다.


tuple1 = 1 # ,(콤마)를 사용하지 않은 경우 

tuple2 = 1, #  ,(콤마)를 사용한 경우  


print(tuple1) # 1 출력 (정수)

print(tuple2) # (1, ) 출력 (튜플)


또한 다음 예제 코드처럼 반복을 사용하여 튜플을 선언 할 수 있습니다.


tuple1 = ("Hello") * 3

tuple2 = ("Hello",) * 3


print(tuple1) # HelloHelloHello 출력

print(tuple2) # ('Hello', 'Hello', 'Hello') 출력


단, 위에서 설명했듯이 ,(콤마)를 사용하지 않는 경우 튜플로 선언되지 않습니다.




★ 튜플 합치기


다음 예제 코드와 같이 + 연산자를 사용하여 튜플을 기준 튜플 뒤에 붙일 수 있습니다.


tuple1 = (1, 2)

tuple2 = ("hi", "bye")

tuple3 = tuple1 + tuple2


print(tuple3) # (1, 2, 'hi', 'bye') 출력


다음 예제 코드처럼 튜플안에 튜플을 중첩시킬 수도 있습니다.


tuple1 = (1, 2)

tuple2 = ("hi", "bye")

tuple3 = (tuple1 , tuple2)


print(tuple3) # ((1, 2), ('hi', 'bye')) 출력



★ 튜플에서 요소 추가 및 변경 시도


위에서 설명했듯이 튜플은 생성 후 요소의 값이나 크기를 변경할 수 없다고했는데요,


파이썬에서 튜플에 요소를 추가, 변경하거나 크기를 변경했을 때 어떻게 되는지 알아보겠습니다.


다음 예제 코드는 튜플의 요소를 변경하려는 시도입니다.


tuple1 = (1, 2, 3, 4)

tuple1[0] = 3 # 오류발생! 

# TypeError: 'tuple' object does not support item assignment


print(tuple1)


위 코드를 실행하면 튜플 객체는 아이템(요소) 할당이 불가능하다고 나옵니다.


튜플에 요소를 추가하려해도 리스트와 달리 append() 내부 함수가 존재하지 않습니다.



★ 튜플에서 슬라이스


리스트와 마찬가지로 튜플에서도 슬라이스를 제공하며 그 사용법 및 기능은 같습니다.


리스트 슬라이스 사용법 및 기능 확인하러가기 ☜ 클릭!


tuple1 = (1, 2, 3, 4)


tuple2 = tuple1[1:] # (2, 3, 4) 출력

tuple3 = tuple1[2:3] # (3, ) 출력

tuple4 = tuple1[0:3:2] # (1, 3) 출력

tuple5 = tuple4[::-1] # (3, 1) 출력



★ 튜플의 길이 구하기


튜플의 길이(크기)는 len()함수를 사용하여 간단하게 구할 수 있습니다.


tuple1 = (1, 2, 3, 4)


print(len(tuple1)) # 4 출력



★ 리스트를 튜플로 변환하기


tuple() 이라는 함수를 통해 리스트를 다음 예제 코드와 같이 변경할 수 있습니다.


list1 = [ 0, 1, 2, 3 ]


tuple1 = (tuple(list1))

print(tuple1) # (0, 1, 2, 3) 출력


tuple2 = (tuple("hello"))

print(tuple2) # ('h', 'e', 'l', 'l', 'o') 출력







이상 '파이썬 튜플'에 대해 알아보았습니다.

질문 또는 오타나 잘못된 정보가 있는 경우 댓글로 달아주세요!


공감♡ 버튼을 눌러주시면 더욱 유용하고 좋은 포스팅으로 찾아 뵙겠습니다.




파이썬의 리스트는 수학적 문장들을 한줄로 표현할 수 있습니다.


리스트로 제곱 표현하기 


기존의 파이썬 리스트를 활용하여 반복문으로 1의 제곱부터 9의 제곱까지 출력하는 방법입니다.


예제 코드 - 제곱 출력


square = []

for x in range(1, 10) :

    square.append(x ** 2)

print(square)


실행 결과


[1, 4, 9, 16, 25, 36, 49, 64, 81]


위 반복문으로 구현한 제곱 출력 코드를 다음과 같이 리스트 내에서 사용할 수 있습니다.


square = [x ** 2 for x in range(1, 10)]


위 반복문 3줄짜리 코드가 1줄로 대체되었습니다!!


출력 결과 역시 동일함을 알 수 있습니다.


위의 파이썬 리스트의 강력한 기능을 활용 해 구구단 출력 코드를 작성 해 보겠습니다.


예제 코드 - 구구단 출력


list1 = []


for i in range(2, 10) :

    for j in range(1, 10) :

        list1.append(i * j)


for i in range(2, 10) :

    for j in range(1, 10) :

        print("{} * {} = {}".format(i, j, list1[(j - 1)+((i - 2) * 9)]))

    print()


실행 결과


2 * 1 = 2

2 * 2 = 4

2 * 3 = 6

2 * 4 = 8

2 * 5 = 10

2 * 6 = 12

2 * 7 = 14

2 * 8 = 16

2 * 9 = 18


... 중략 ....


9 * 1 = 9

9 * 2 = 18

9 * 3 = 27

9 * 4 = 36

9 * 5 = 45

9 * 6 = 54

9 * 7 = 63

9 * 8 = 72

9 * 9 = 81


이중 for반복문을 사용하여 구구단을 출력하는 모습입니다.


이를 리스트 선언문에서 한줄로 만들면 다음과 같습니다.


list1 = [i*j for i in range(2,10) for j in range(1, 10)]


for i in range(2, 10) :

    for j in range(1, 10) :

        print("{} * {} = {}".format(i, j, list1[(j-1)+((i-2)*9)]))

    print()


출력문을 제외하면 코드는 단 한줄입니다. (파란색 코드)


이처럼 리스트를 선언할 때 파이썬의 리스트 기능을 적절히 사용하여 코드를 간단하고 보기 쉽게 만들 수 있습니다.




또한 파이썬 리스트에는 슬라이싱 기능또한 존재합니다.


간단히 말해 리스트 요소들을 필요한 만큼 자를 수 있는 기능입니다.


다음과 같은 리스트가 있다고 가정합시다.


list1 = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]


0부터 9까지 정수가 존재하는 리스트입니다.


여기서 3부터 8까지만 필요한 정수 리스트가 필요하다고 가정합니다.


새로운 배열을 생성하여 3부터 8까지 작성하여 선언할 필요없이 다음과 같이 선언할 수 있습니다.


list1 = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]

list2 = list1[ 3 : 9 ]


정말 간단하죠?


: 연산자를 통해 시작 인덱스와 종료 인덱스를 설정해주면 자동으로 시작인덱스부터


종료인덱스-1 까지 리스트 요소들을 잘라줍니다.


또한 다음과 같이 사용 할 수도 있습니다.


list1 = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]


list2 = list1[ 3 : 9 ] # [3, 4, 5, 6, 7, 8] 출력

list3 = list1[ 1 : ] # [1, 2, 3, 4, 5, 6, 7, 8, 9] 출력

list4 = list1[ : 8 ] # [0, 1, 2, 3, 4, 5, 6, 7] 출력

list5 = list1[ 1 : 8 : 2 ] # [1, 3 ,5, 7] 출력

list6 = list1[ : : -1 ] # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] 출력

list7 = list1[ 10 : 0 : -2 ] # [9, 7, 5, 3, 1] 출력


list2는 list1의 요소를 3부터 8까지 자른 리스트입니다.


list3는 list1의 요소를 1부터 끝까지 자른 리스트입니다.


list4는 list1의 요소를 처음부터 8까지 자른 리스트입니다.


list5는 list1의 요소를 1부터 8까지 간격이 2씩 자른 리스트입니다.


list6는 list1의 요소를 처음부터 끝까지 역순 리스트입니다.


list7는 list1의 요소를 10부터 0까지 간격이 2씩 역순 리스트입니다.



또한 필터(filter)함수를 사용하여 람다(lambda)식으로 제공된 조건을 첫번째 인수로 사용하고


두번째 인수에 조건을 나열하여 필터링 가능합니다.


list1 = list(filter(lambda x : x % 2 == 1, range(0, 10))) # [1, 3, 5, 7, 9] 출력

list2 = list(filter(lambda x : x >= 0, range(-5, 5))) # [0, 1, 2, 3, 4] 출력

list3 = reduce(lambda a, b : a if(a > b) else b, [5, -5, 0, 3, 11, -20, 7]) # 11 출력

#reduce 함수를 사용하기 위해 from functools import reduce 추가할것.


list1는 0부터 9사이 숫자 중 홀수만 가지는 리스트입니다.


list2는 -5부터 4사이 숫자 중 0보다 큰 숫자만 가지는 리스트입니다.


list3는 마지막 인수 리스트 중 가장 큰 숫자를 가지는 리스트입니다.




이상 '파이썬 리스트 활용'에 대해 알아보았습니다.


질문 또는 오타나 잘못된 정보가 있는 경우 댓글로 달아주세요!


공감♡ 버튼을 눌러주시면 더욱 유용하고 좋은 포스팅으로 찾아 뵙겠습니다.





안녕하세요 열코입니다.


리스트는 파이썬에서 가장 강력한 도구 중 하나로 다른 언어에서의 배열과 비슷합니다.

리스트의 최대 장점은 리스트의 요소들이 항상 같은 타입일 필요가 없다는 것입니다.

리스트에는 정수, 실수, 문자열, 객체 등이 포함될 수 있습니다.

다음 예를 확인해 봅시다.


리스트 - 예제코드1

mylist = [1, 0.1, "string", 3+1]

print(mylist)

print(mylist[1])


위 코드처럼 리스트 요소에 정수, 실수, 문자열, 식이 포함되어 있습니다.

이를 출력하면 다음과 같습니다.


실행결과

[1, 0.1, 'string', 4]

0.1


크기또한 가변적이어서 선언 후 요소 및 크기가 변경될 수 있습니다.

다음 예를 확인해봅시다.


리스트 - 예제코드2

mylist = [1, 0.1, "string", 3+1]

mylist.append("add")

mylist.insert(0, 9.9)

print(mylist)


위 예제 코드처럼 append 또는 insert 함수를 통해 리스트에 요소를 추가할 수 있습니다.

실행결과를 확인해볼까요?



실행결과

[9.9, 1, 0.1, 'string', 4, 'add']


append를 통해 추가한 "add" 문자열은 리스트의 맨 마지막 요소 뒤에 추가되었으며,

insert를 통해 추가한 9.9 실수는 0이라는 인덱스를 통해 리스트의 맨 앞에 추가되었습니다.


이처럼 파이썬의 리스트는 강력한 기능을 가지고있습니다.

또한 아래의 내장 함수(Built-in Functions)를 포함하고 있습니다.



☞ 파이썬 리스트 내장 함수


- Append() : 리스트의 맨 끝에 요소를 추가합니다.

list1 = [0, 1, 2, 3]

list1.append(4)

list1.append("str1")

list1.append(0.3)

print(list1)


♪ 실행 결과 : [0, 1, 2, 3, 4, 'str1', 0.3]


- Extend() : 리스트에 iterable 객체 (리스트, 튜플, 딕셔너리 등)의 요소들을 추가합니다.

list1 = [0, 1, 2, 3]

list2 = []

list2.extend(list1)

print(list2)


♪ 실행 결과 : [0, 1, 2, 3]


- Insert() : 지정된 인덱스의 요소를 추가합니다.

list1 = [0, 1, 2, 3]

list1.insert(2, "2번째")

print(list1)


♪ 실행 결과 : [0, 1, '2번째', 2, 3]


- Remove() : 지정된 리스트의 요소를 제거합니다.

list1 = [3, 1, 9.9, "str", 0.5]

list1.remove(9.9)

print(list1)


♪ 실행 결과 : [3, 1, 'str', 0.5]


- Pop() : 지정된 인덱스의 요소를 제거합니다.

list1 = [3, 1, 9.9, "str", 0.5]

list1.pop(3)

print(list1)


♪ 실행 결과 : [3, 1, 9.9, 0.5]


- Clear() : 리스트의 모든 요소를 제거합니다.

list1 = [3, 1, 9.9, "str", 0.5]

list1.clear()

print(list1)


♪ 실행 결과 : []


- Index() : 지정된 리스트의 요소의 인덱스를 바

list1 = [3, 1, 9.9, "str", 0.5]

print(list1.index(9.9))


♪ 실행 결과 : 2



- Count() : 지정된 요소의 리스트 내의 개수를 반환합니다.

list1 = [1, 2, 2, 3, 3, 3]

print(list1.count(2))


♪ 실행 결과 : 2


- Sort() : 리스트의 항목을 오름차순으로 정렬합니다.

list1 = [4, 2, 1, 5, 0, 3]

list1.sort()

print(list1)


♪ 실행 결과 : [0, 1, 2, 3, 4, 5]


- Reverse() : 리스트의 항목을 순서를 역순으로 변경합니다.

list1 = [4, 2, 1, 5, 0, 3]

list1.sort()

list1.reverse()

print(list1)


♪ 실행 결과 : [5, 4, 3, 2, 1, 0]


- Copy() : 리스트의 얕은 복사(Shallow copy)를 수행합니다.

list1 = [4, 2, 1, 5, 0, 3]

list2 = list1.copy()

print(list2)


♪ 실행 결과 : [4, 2, 1, 5, 0, 3]


이상 '파이썬 리스트'에 대해 살펴보았습니다.

질문 또는 오타나 잘못된 정보가 있는 경우 댓글로 달아주세요!

공감♡ 버튼을 눌러주시면 더욱 유용하고 좋은 포스팅으로 찾아 뵙겠습니다.




카카오톡 PC버전 설치하는 방법에 대해 알아보겠습니다.


카카오톡 PC버전은 Windows XP이상에서 모두 사용 가능하며


32bit, 64bit 운영체제에 따른 제한이 없으며 설치프로그램을 다운로드 받아


간단하게 설치 가능합니다.



다운로드 방법


1. 카카오톡 공식 홈페이지 ☜ 클릭!


2. 네이버 소프트웨어 다운 ☜ 클릭!


원하는 사이트를 클릭하여 다운받을 수 있습니다.



1. 카카오톡 공식 홈페이지에서 다운





카카오톡 공식 홈페이지에 들어가면 다음과 같은 화면이 실행됩니다.


우측 상단에 보시면 다운로드를 마우스에 갖다 대시면


PC버전으로 Windows XP / Windows Vista 이상 / Mac OS X 10.8 이상


이런식으로 나타나게 됩니다.



자신이 PC가 윈도우 XP면 Windows XP를 선택하시고


윈도우 Vista, 7, 8, 10 이라면 Windows Vista 이상을 선택하시고


Mac OS라면 Mac OS X 10.8 이상을 선택하시면 됩니다.



* 만약 자신의 PC가 어떤 운영체제인지 모르는 분은 아래 2. 네이버 소프트웨어 다운을 확인하시기 바랍니다.





2. 네이버 소프트웨어 다운





네이버 소프트웨어 다운로드 페이지에 접속하시면 다음과 같은 화면이 보입니다.


1번의 빨간 네모칸을 보시면 현재 본인의 PC의 운영체제 사양이 나타나게됩니다.


해당 운영체제를 확인하시고 2번 3번 네모칸을 눌러 다운로드를 진행하시면 됩니다.



설치가 완료되었다면 다운로드 폴더에 들어가서 KakaoTalk_Setup.exe를 실행시켜줍니다.




다음과 같은 화면이 나타나면 다음 버튼을 눌러 설치를 완료하시면 됩니다.





혹시 설치 중 오류사항이나 궁금한점은 댓글로 달아주세요!


이상 '카카오톡 pc버전 설치하기' 에 대해 설명했습니다.


공감♡ 버튼을 눌러주시면 더욱 유용하고 좋은 포스팅으로 찾아 뵙겠습니다.



to Top