StoryCode

4. 이클립스 + FCM

Eclipse/(Fail) FCM with Eclipse.No support By G
반응형

이클립스에서 FCM 기반 앱 개발하기 위한 준비 사항.


1. 안드로이드 앱 프로젝트를 시작한다.


2. FCM 라이브러리를 이클립스에 설치한다.

http://storycode.tistory.com/13 참조


3. google-play-serivces_lib 프로젝트를 import 한다.

  - SDK Manager 에서 최신 버전을 설치하면 google-play-serivces_lib 프로젝트가 존재하지 않는 것 같다.

  - 그래서, 아래의 포스트에서 google-play-services_lib 프로젝트를 다운로드 받아서 import 한다.

    * http://blog.naver.com/websearch/220830144941

  - google-play-services_lib 프로젝트를 import 하는 이유는 firebase 에서 google-play-service 를 필요로 하고 해당 R 클래스도 필요로 하기 때문이다.

  - import 한 google-play-services_lib 를 FCM 앱의 라이브러리로 포함시킨다.


4. FCM 을 위한 google-services.json 파일 다운로드 및 적용

  - https://firebase.google.com/docs/cloud-messaging/ 에 접속하여서 새 프로젝트를 생성한 후, google-services.json 파일을 다운로드한다.
  - 아래의 포스트와 같이 google-services.json 파일의 내용을 strings.xml 파일에 저장한다.

5. FCM 을 위한 AndroidManifest.xml 파일 수정
  - 아래의 포스트와 같이 AndroidManifest.xml 파일을 수정하세요.

6. FCM token 생성 요청
  - MainActivity.java 소스 코드를 아래와 같이 개발하여서 FCM token 을 생성 요청한다.
  - FCM token 이 생성된 상태이면 FirebaseInstanceId.getInstance().getToken() 호출시 token 을 가져오고 그렇지 않으면 null 을 가져온다.

public class MainActivity extends Activity
{
 private static String TAG = "MainActivity";
 
 @Override
 protected void onCreate( Bundle savedInstanceState )
 {
  super.onCreate( savedInstanceState );
  setContentView( R.layout.activity_main );
    
  FirebaseMessaging clsMessaging = FirebaseMessaging.getInstance();
  clsMessaging.subscribeToTopic("news");
  
  String token = FirebaseInstanceId.getInstance().getToken();
  Log.e( "token2", "token[" + token + "]" );
 }
}

7. FCM token 생성 이벤트 수신
  - FCM token 생성 이벤트 수신을 위한 서비스를 개발한다. 클래스 이름은 AndroidManifest.xml 에 기술한 이름과 동일해야 한다.

public class FCMIDService extends FirebaseInstanceIdService
{
 private static final String LOG_TAG = "FCMIDService";

 @Override
 @WorkerThread
 public void onTokenRefresh()
 {
  super.onTokenRefresh( );
  
  String strToken = FirebaseInstanceId.getInstance().getToken();
  
  Log.d( LOG_TAG, "token[" + strToken + "]" );
 }
}


8. FCM 메시지 이벤트 수신

  - FCM 메시지 이벤트 수신을 위한 서비스를 개발한다. 클래스 이름은 AndroidManifest.xml 에 기술한 이름과 동일해야 한다.


public class FCMService extends com.google.firebase.messaging.FirebaseMessagingService 
{
 private static final String LOG_TAG = "FCMService";


 @Override
 @WorkerThread
 public void onMessageReceived( RemoteMessage arg0 )
 {
  super.onMessageReceived( arg0 );
    
  Map<String,String> clsData = arg0.getData( );
  
  for( Map.Entry<String, String> it : clsData.entrySet( ) )
  {
   Log.d( LOG_TAG, "key(" + it.getKey( ) + ") value(" + it.getValue( ) + ")" );
  }
  
  Notification clsNotification = arg0.getNotification( );
  if( clsNotification != null )
  {
   Log.d( LOG_TAG, "notification body(" + clsNotification.getBody( ) + ")" );
  }
 }
} 




[추가정보1]

3. google-play-serivces_lib 프로젝트를 import 한다.  수행시

google-play-services_lib 를 단순히 Java Build Path 의 Libraries 에 추가하면 

6번의 AndroidManifest.xml 의
    <provider
         android:authorities="com.gcharger.client.firebaseinitprovider"
         android:name="com.google.firebase.provider.FirebaseInitProvider"
         android:exported="false"
         android:initOrder="100" />
부분과 7번 
FirebaseMessaging clsMessaging = FirebaseMessaging.getInstance();
clsMessaging.subscribeToTopic("news");
String token = FirebaseInstanceId.getInstance().getToken();
부분에서 Runtime Error 가 발생한다.

google-play-services_lib 를 Java Build Path 의 라이브러리가 아닌 android Library 로 추가해 주어야 한다. 

[추가정보2]
정상적으로 모든 작업을 마치고 firebase console 에서 메시지를 발송하면 어플로 푸시가 들어오는것을 확인할 수 있지만 FCMService 의 onMessageReceived 에 Notification sound 를 설정해도 어플이 백그라운드 상태에서는 소리가 나지 않는다.
어플이 백그라운드 상태에서 firebase console 로부터 수신된 푸시는 onMessageReceived 를 타지 않기때문!
서버측 프로그램을 만들어 푸시를 발송하면 onMessageReceived 의 Notification 을 통해 메시지가 수신되면서 소리 및 Notification 설정대로 푸시 메시지가 수신된다.


반응형

3. App 에 등록

Eclipse/(Fail) FCM with Eclipse.No support By G
반응형

1) 생성된 App 에서 ID 확인


2) Android Studio 에 추가


반응형

2. FireBase 에서 프로젝트 만들기

Eclipse/(Fail) FCM with Eclipse.No support By G
반응형

1) https://console.firebase.google.com/u/0/project/fir-demo-project/notification?pli=1



2) 프로젝트 추가


3) 가운데 "Add Firebase to you Android app" 을 App 생성


반응형

'Eclipse > (Fail) FCM with Eclipse.No support By G' 카테고리의 다른 글

6. 추가 설정  (0) 2018.05.02
5. 이클립스에 FCM Jar 설치하는 방법  (0) 2018.04.30
4. 이클립스 + FCM  (0) 2018.04.26
3. App 에 등록  (0) 2018.04.26
1. 새 프로젝트 만들기  (0) 2018.04.26

1. 새 프로젝트 만들기

Eclipse/(Fail) FCM with Eclipse.No support By G
반응형

1) https://console.developers.google.com 에서 우측 상단에 [ + ] 을 눌러 프로젝트를 생성.




2) API 추가



3) API 키추가



반응형

'Eclipse > (Fail) FCM with Eclipse.No support By G' 카테고리의 다른 글

6. 추가 설정  (0) 2018.05.02
5. 이클립스에 FCM Jar 설치하는 방법  (0) 2018.04.30
4. 이클립스 + FCM  (0) 2018.04.26
3. App 에 등록  (0) 2018.04.26
2. FireBase 에서 프로젝트 만들기  (0) 2018.04.26

SQLite 설치

C#
반응형

- SQLite 사이트에서 다운로드 받은뒤 참조에 추가하는 방식으로는, 버전이 맞지 않다고 오류를 계속 내뱉음.


- 다른 방식으로 Visual Studio 에서 "메뉴> 보기 > 다른창 > 패키지관리자콘솔" 실행후,

"Install-Package System.Data.SQLite -Version 1.0.106" 명령 실행하면 설치됨

  이 경우 Any CPU 를 64bit, 32bit 하나 정해야 하는 듯 하며, 두가지 버전으로 배포해야 할 듯 함.

반응형

'C#' 카테고리의 다른 글

VisualStudioCode에서 개발을 위한 설정  (0) 2021.05.26
Install 을 위한 셋업파일 만들기  (0) 2019.07.30
실행시 관리자 권한창 띄우기  (0) 2017.07.26

중등부 문제 1

정보올림피아드(KOI)/전국본선 중등 2017
반응형

방 배정하기 


정보 중학교 3학년 남학생들은 단체로 2박 3일 수학여행을 가기로 했다. 학생 들이 묵을 숙소에는 방의 정원(방 안에 있는 침대 수)을 기준으로 세 종류의 방이 있으며, 같은 종류의 방들이 여러 개 있다. 정보 중학교에서는 학생들에게 이 방들을 배정하되, 배정된 모든 방에 빈 침대가 없도록 하고자 한다.


예를 들어, 방의 종류가 5인실, 9인실, 12인실이고 3학년 남학생 전체가 113명 이라면, 5인실 4개, 9인실 5개, 12인실 4 개를 예약하면 각 방에 남는 침대 없이 배정이 가능하다. 또한 12인실은 사용하 지 않고 5인실 10개와 9인실 7개만 사 용하는 것도 가능하다. 그러나 방의 종 류가 3인실, 6인실, 9인실이고 3학년 남 학생 전체가 112명이라면 빈 침대 없이 방을 배정하는 것은 불가능하다.


방의 정원을 나타내는 서로 다른 세 자 연수와 전체 학생 수를 나타내는 자연 수 하나가 주어졌을 때, 배정된 모든 방 에 빈 침대가 없도록 방 배정이 가능한 지를 결정하는 프로그램을 작성하시오. 단, 세 종류의 방은 모두 충분한 개수가 있다고 가정하며, 위의 예에서와 같이 세 종류의 방을 모두 활용하지 않고 한 종류 또는 두 종류의 방만 이용하여 배 정하는 것도 허용한다.


소스파일의 이름은 room.c 또는 room.cpp를 권장하지만, 서버에 제출하는 데는 다른 이름도 상관없다.



입력 형식 표준


입력으로 방의 정원을 나타내는 서로 다른 세 자연수 A, B, C (1 ≤ A < B < C ≤ 50) 와 전체 학생 수를 나타내는 자연수 N (1 ≤ N ≤ 300)이 공백으로 분리되어 한 줄에 주어진다.


출력 형식


빈 침대 없이 배정이 가능할 경우 표준 출력으로 1을, 불가능할 경우 0을 출력한다.


부분문제의 제약 조건


● 부분문제 1: 전체 점수 100점 중 3점에 해당 하며 입력 예시로 주어진 입력만 존재한다.

● 부분문제 2: 전체 점수 100점 중 5점에 해당 하며   이다.

● 부분문제 3: 전체 점수 100점 중 14점에 해 당하며  는 의 배수이다.

● 부분문제 4: 전체 점수 100점 중 78점에 해 당하며 원래의 제약조건 이외에 아무 제약조 건이 없다. 



입력과 출력의 예



반응형

실행시 관리자 권한창 띄우기

C#
반응형


 추가할 코드는 아래와 같습니다.



if (IsAdministrator() == false)

{

    try

    {

        ProcessStartInfo procInfo = new ProcessStartInfo();

        procInfo.UseShellExecute = true;

        procInfo.FileName = Application.ExecutablePath;

        procInfo.WorkingDirectory = Environment.CurrentDirectory;

        procInfo.Verb = "runas";

        Process.Start(procInfo);

    }

    catch (Exception ex)

    {

    }


    return;

}


위 코드 추가후 실행하시면,


관리자 권한 상승여부를 묻는 팝업이 나타나게 됩니다.

반응형

'C#' 카테고리의 다른 글

VisualStudioCode에서 개발을 위한 설정  (0) 2021.05.26
Install 을 위한 셋업파일 만들기  (0) 2019.07.30
SQLite 설치  (0) 2017.12.26

팀뷰 리셋, TeamViewer Reset

사무, 유용한 툴
반응형
1) rd /S /Q "%appdata%\TeamViewer" > nul

2) rd /S /Q "%userprofile%\Application Data\Teamviewer" > nul

3) 32bit : reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\TeamViewer" /f > nul
    64bit : reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TeamViewer" /f > nul

4) MAC 재설정 ( 중요- 그래서 가상 PC 쓰는게 필요함 )


팀뷰 켜놓은 상태에서 네트워크끊은후 재연결해서 ID 가 변경되는지 확인




- 참조 : http://www.etobang.com/bbs/board.php?bo_table=tip&wr_id=63258 -


안되는분들 : 부팅후  TeamViewer를 실행한 적이 있어서 안된다면 재부팅먼저 하신 후 아래를 진행해 보세요.
위 첨부파일을 다운받아 압축을 풀고 실행하신후 재부팅 하시면 됩니다.
Vista 이상은 관리자권한으로 실행 해야 할 수도 있습니다.

과정은  아래와 같습니다. 

1. appdata 의 Teamviewer 폴더 삭제  

2. 레지스트리의 Teamviewer 폴더 삭제

3. 재부팅  

32비트
================================

@echo Off 
REM TeamViewer 상업적 사용 감지 리셋하기
REM 적용후 재부팅

REM 폴더 삭제 
rd /S /Q "%appdata%\TeamViewer" > nul
rd /S /Q "%userprofile%\Application Data\Teamviewer" > nul

REM 레지스트리 삭제 
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\TeamViewer" /f > nul
exit 

================================

64비트
================================

@echo Off 
REM TeamViewer 상업적 사용 감지 리셋하기
REM 적용후 재부팅

REM 폴더 삭제 
rd /S /Q "%appdata%\TeamViewer" > nul
rd /S /Q "%userprofile%\Application Data\Teamviewer" > nul

REM 레지스트리 삭제 
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TeamViewer" /f > nul
exit 

================================

적용후 재부팅해 보세요.
ID가 바뀌어 있는지, 상업적 사용 감지가 사라졌는지 확인하시면 됩니다.

또는 

위 적용후 
로컬영역연결 사용안함 
Teamviewer 실행 -  실행하면 세션연결안된다고 나옵니다.(그대로 켜둡니다) 
로컬영역연결 사용 - 하면  켜져있던 Teamviewer 가 자동으로 새로운  ID 를 받아옵니다.


반응형

'사무, 유용한 툴' 카테고리의 다른 글

ZOOM.iPad 미러링  (0) 2020.04.02
ZOOM.사전 등록.출석  (0) 2020.04.02
마우스 하나로 두대 컴퓨터.Synergy  (0) 2020.02.16
삼성브라우저에서 계속 문제 발생  (0) 2018.05.29
판서, 전자칠판, EpicPen  (0) 2018.05.29

품목별 입고/출고별 카운트 세기

사무, 엑셀, Excel
반응형


sumifs 를 활용한 방식입니다.

첨부파일 한번 보세요. ^^;


입고,출고카운트.xlsx


반응형

A2 Row에 데이타 쓰면 마지막 Row로 옮기기

사무, 엑셀, Excel
반응형
http://www.clien.net/cs2/bbs/board.php?bo_table=kin&wr_id=3821225



안녕하세요 클리앙 유령회원입니다

 

네팔 지진 복구 현장에서만 뛰다가 사무직을 하다보니 엑셀에 궁금한 점이 있어 이렇게 글을 남깁니다

 

(VBA가 맞는지 해깔립니다)

A2에서 D2까지의 정보를 입력 후 저장 버튼을 누르면

 

A6에서 D6번에 정보가 이동되고 

 

A2에서 D2까지의 정보를 새로 입력하면 

A7에서 D7번에 정보가 입력되면서

새 정보를 입력 할때마다 계속 하단에 정보가 입력되는 방법을 알고 싶습니다


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

비베를 설명으로 할 수 있는 건 아닌 것 같아 간단하게 만들어 보았습니다.

아래 파일을 다운받아서 써보세요.


입고.xlsm



반응형