posted by 생존본능 2015.10.29 21:31


 안드로이드를 개발하다가 java의 초기화 타이밍에대해 다시금 생각하는 문제에 도달하여 이렇게 글을 남깁니다.


제가 도달한 문제인데 한번 알아두면 좋을것 같네요.


문제! 





print 된값은?




 ..


 ..


 ..


 ..


 ..


 ..


 ..


 ..


 ..


 ..


 ..


 ..


정답은 0 입니다.


 왜 0일까요? 분명 test라는 int를 5로 초기화 하는데,  결과값은 0이라니?


 이 문제때문에 한동안 고민했었는데요,  이유는 초기화 타이밍 때문이었습니다.


 JavaTest 라는 클래스를 초기화 하면서 test 라는 변수에 5라는 숫자를 넣기전에


 Parent 클래스가 test라는 변수를 호출하여 최초 클래스 생성시 기본값인 0 이 표시된것이지요,


 알고있으면 당연히 넘길 문제인데, 모르면 오랫동안 찾아도 쉽게 찾을수 없는 부분일듯 합니다.





posted by 생존본능 2015.10.15 23:00


Android Studio 에서 push GCM 구현


1. 프로젝트를 생성.

.


2. build.gradle 에서 gcm 라이브러리를 import 합니다.


dependencies 안에 값을 넣습니다.


 compile 'com.google.android.gms:play-services:8.1.0'





3. class 파일을 생성하여줍니다.


 총 3개의 파일이 필요합니다.


화면구성과 값 등록시 필요한 MainActivity 와,


push가 왔을때 전달할 GcmBroadcastReceiver 클래스


push 받은이후 동작을 구성할 GcmIntentService 클래스가 필요합니다.




MainActivity


mainActivity에서는 푸시를 등록하는 역활을 해줍니다.




SENDER_ID 값에다가 등록한이후 클라이언트 ID값을 넣어주시면 됩니다.


그리고 등록한 이후에 쿠키값을 서버에 전달하여 주면 됩니다.


regId = gcm.register(SENDER_ID); 


 서버에서는 서버키 값과 regId 두가지 값으로 push를 하게 되기때문에,


regId값을 서버에 넣는 코드를 추가하시면 됩니다.



GcmBroadcastReceiver


GcmBroadcastReceiver는 단순이 값을 받아서 서비스쪽에 전달하는 역활을 하게됩니다.




GcmIntentService


GcmIntentService는 push가 왔을때에 행동을 취하게 됩니다.


현재 클래스는 단순히 값이 왔을때 Log.i를 찍는 행동을 하게 됩니다.





2. manifest 에서 권한을 추가합니다.






manifest 에서 리시버와 서비스를 추가합니다.




AndroidManifest.xml



이후 서버쪽에 서버 키값과 regId 값을 전달해주시면,


서버쪽에서 push를 하게되면 디바이스쪽으로 전달됩니다.


posted by 생존본능 2015.08.12 01:02


 기다리고 기다려도 오지 않아 PIN 번호 발급이 잘못됬나?


 한글로 주소를 입력해서 안오는건가?


 우편부아저씨가 아무도 없다고 그냥가셨나?


 별에 별생각을 다했었는데, 드디어 왔네요.


 저는 오는데 20일 정도 걸린것같습니다.




 이제야 겨우 지급 받을수있겠네요~~


 휴우

posted by 생존본능 2015.07.15 19:28

org.springframework.web.client.RestClientException: Could not extract response: no suitable HttpMessageConverter found for response type [tc.wo.mbseo.exchangediary.https.datas.TestData] and content type [text/html]

 몇일 동안 고생했던 오류 ㅠ




androidannotations 에서 rest templete 을 사용하는데 계속 이 오류 뜨는 경우.

서버에서 가져오는 값이 text/html 으로 오고 있기때문에 

GsonHttpMessageConverter 으로 변환할수 없기때문에 발생하는 오류입니다.



1. 텍스트에 대한 대응 추가.


이럴때에는 "converters =" 에서 
 
StringHttpMessageConverter.class 를 추가하여 텍스트에 대한 대응을 추가하면

리턴받는 값이 text 값으로 정상적으로 들어오게 됩니다.



2. server 에서 수정 하는 방법

 사실상 서버쪽에서 발생된 오류가 볼수있으며, json 포멧으로 넘기고 타입은 text/html 을 넘기기 때문에

발생된 것이므로 서버쪽에서 header 에서 추가해주면 됩니다.




3. android 쪽에서 수정하는 방법



 RestTemplate getRestTemplate();


 void setRestTemplate(RestTemplate restTemplate);


를 추가하여 template에 접근할수있도록 변경한이후,




GsonHttpMessageConverter 에서 파싱할수있는 타입을 추가해주시면 됩니다.


posted by 생존본능 2015.06.19 19:29


posted by 생존본능 2015.06.19 16:20

style.xml 에 구현.

    <style name="DialogTheme" parent="android:Theme.Dialog">

   <item name="android:windowIsTranslucent">true</item>

   <item name="android:windowBackground">@android:color/transparent</item>

   <item name="android:windowContentOverlay">@null</item>

   <item name="android:windowNoTitle">true</item>

   <item name="android:windowIsFloating">true</item>

</style>


posted by 생존본능 2015.06.18 17:10




   <EditText 

       android:layout_width="match_parent"

       android:layout_height="match_parent"

       android:focusableInTouchMode="false"/>


posted by 생존본능 2015.06.16 18:29


 안드로이드 GCM PUSH 인증 받기 v.2015.06.16


 예전 방법밖에 없어 2015.06.16 에 현재 최신버전으로 다시 올립니다.



 1. 프로젝트 생성.

 

https://console.developers.google.com

경로로 이동하여 프로젝트를 생성합니다.





프로젝트 아이디를 입력하여 생성합니다.





프로젝트를 클릭하여 push 프로젝트로 이동합니다.




 API 로 이동합니다.







 Cloud Message for Android 로 이동







 API 사용 설정을 클릭하여 사용을 설정합니다.







사용이 완료되면 사용자 인증 정보로 이동합니다.




새키 만들기를 클릭하여 팝업띄운후 서버키를 선택합니다.



ip 주소는 선택사항이므로, 넣지 않아도 되기때문에 바로 만들기를 클릭하여 API 키를 생성합니다.





 여기까지가 서버에서 사용할수 있는 서버용 키를 생성하는 방법입니다.



 서버쪽에서 push 보낼때 아래와 같이 보내면 됩니다.


  $headers = array(

  'Authorization: key=' . 'AIzaSyBhhj2UKVHNqoN8PbkPWHBFVv************',

  'Content-Type: application/json'

 );




 이후 클라이언트쪽 key를 가져오기 위해서는 구글 서버스 쪽으로 이동합니다.


 https://developers.google.com/mobile/add





Pick a Platform 을 선택합니다.



  



플랫폼을 선택한 이후,





프로젝트를 선택합니다.






패키지를 입력해 줍니다.




이후  Choose and configure services 를 클릭하여 페이지를 이동한후,


 Cloud Messaging을 활성화합니다.






 CONTINUE TO

 Generate configuration files 를 클릭하여 이동하면,





 클라이언트에서 사용할수 있는 Sender Id를 가져올수 있습니다.


 클라이언트에서는 아래와 같이 사용 하시면 됩니다.


 regid = gcm.register("85770593****");




posted by 생존본능 2015.06.16 17:54


 안드로이드 푸시 (android push) MismatchSenderId  오류


 

 안드로이드의 푸시를 하다보면 많은 오류를 발생하는데,


 안드로이드 푸시 (android push) Unauthorized Error 401 오류


 오류를 겨우겨우 해결했더니 다음으로 나오는게, MismatchSenderId 오류...


 이 오류는 클라이언트에서 등록된 senderId가 일치 하지 않는다는 것입니다.


 그래서 결국엔 sender Id 받고 다시 하니 되네요,


 원 한번에 되는게 없네..ㅠ 


 

안드로이드 GCM PUSH 인증 받기 v.2015.06.16

 



티스토리 툴바