안드로이드 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****");





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


 

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


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


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


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


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


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


 

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

 



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


 오류는 구글에 등록된 key 가 일치되지 않을경우 발생됩니다.


 체크해야 할부분은 구글에서 발급받은 key가 정상적으로 입력되었는지 체크하시고,


 구글에서 발급받은직후 바로 테스트하면 바로 업데이트가 되지 않아 발생되는 경우도 생깁니다.


 이럴땐 10~20분정도 기다리고 다시 테스트 하시면 정상적으로 됩니다.


 만약 그래서 똑같은 오류가 발생된다면 공개 api 액세스 key 를 삭제후에 키를 새로 발급받고


 10~20분 기다리고 테스트하시면 됩니다.




 안드로이드 사용시 자주 발생되는 out of memory 에 한가지 해결 방법



 SoftReference 



 메모리가 부족할경우, 담겨져 있는 데이터의 메모리를 비워 사용에 필요한 메모리를 확보한다.





HashMap<String, SoftReference<Bitmap>> bitmapMap = new HashMap<String,                                                         SoftReference<Bitmap>>();


bitmapMap.put(key, new SoftReference<Bitmap>(value));




android:adjustViewBounds="true"

<ImageView android:layout_width="match_parent" android:layout_height="wrap_content"  

            android:adjustViewBounds="true" />



 androidannotations 에서 많이 사용되는것 위주로 정리해 두겠습니다.





 1. @EActivity


 안드로이드에서 가장 많이 사용되는 어노텐션입니다.


 androidannotations 을 사용하는 activity를 명령하는 어노텐션 입니다.


@EActivity

public class MainActivity extends Activity {


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

}


 위와 같이 명명 하시면 됩니다.


 또한 layout과 같이 사용하시려면 


 

@EActivity( R.layout.activity_main )

public class MainActivity extends Activity {


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }

}



 내용 처럼 @EActivity( R.layout.activity_main ) 으로 사용 하시면 됩니다.


 이렇게 적용하신 다음에


 mainifests에서 activity 명을 activity_ 으로 수정해주시면 됩니다.




 변경해 주시면 오류가 뜨는데 이때 Build > rebuild project 하시면 오류가 사라집니다.



 rebuild project를 하시면 보이지는 않지만 androidannotations에서 자동으로


 "activity_" 라는 클래스를 생성하기때문에 정상적으로 표시되는 것을 확인하실수있습니다.


 




 2. @AfterViews


@AfterViews는 view에 대한 모든 내용이 완료된 이후에 호출됩니다.



@EActivity( R.layout.activity_main )

public class MainActivity extends ActionBarActivity {



    @AfterViews

    protected void init()

    {

    }

}



 위 처럼 사용하시면 됩니다.


 주의 하실점은 androidannotations에서 MainActivity_라는 클래스를 생성하여


 MainActivity에 접근하기때문에 private를 사용할경우 오류가 발생합니다.


 public 또는 protected 만 사용이 가능합니다.





 3, @ViewById


 @ViewById는 안드로이드에서 사용했던 findViewById의 절차를 간소한 어노텐션입니다.


protected TextView tvMain;


    @Override

    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {

        super.onCreate(savedInstanceState, persistentState);

        tvMain = (TextView) findViewById( R.id.tvMain );

    }



 처럼 사용했던 기존에 방식에서 @ViewById를 사용함으로써 간소화 하는 방식입니다.



 사용법은


     @ViewById

    protected TextView tvMain;


 처럼 사용하시면 됩니다. 위처럼 사용하시면 R.id.tvMain 이란 객체를 찾아 tvMain 변수에 넣어줍니다.



    @ViewById ( R.id.tvMain )

    protected TextView tvMain;



 또한 위처럼도 사용이 가능합니다.




 4. @Click

 

 기존에 사용하던 버튼을 사용하던 방식에서 크게 간소화 되었습니다.


protected TextView tvMain;


    @Override

    public void onCreate(Bundle savedInstanceState, PersistableBundle persistentState) {

        super.onCreate(savedInstanceState, persistentState);

        tvMain = (TextView) findViewById( R.id.tvMain );

        tvMain.setOnClickListener( new View.OnClickListener(){

            @Override

            public void onClick(View v) {

                Log.i(TAG , "tvMainClick");

            }

        });

    }


 

 사용 방식은

 

@Click( R.id.tvMain )

    protected void tvMainClick()

    {

        Log.i(TAG , "tvMainClick");

    }


 입니다. 기존에 사용할때, 아이디 지정및 객체 생성등의 필요없는


 내용이 사라짐으로써 코드량이 확 주는 것을 확인 하실수 있습니다.





 안드로이드 스튜디오( Android Studio )에다가 androidannotations 적용하기가 여간 까다롭네요.


 이전에 올라왔던 글들을 보면 업데이트가 되서 그런지 않되는 경우가 많이 있구요,


 그래서 최신버전으로 다시 적용 방법을 보겠습니다.


 이글은 2015-05-04일에 작성되었습니다.


 

 우선 프로젝트를 생성한 이후 Gradle Scripts를 확인해 보시면 build에 관련하여


 두개의 gradle을 확인 하실 수있습니다.




 두개의 gradle중 Module: app 을 선택하여 진입합니다.



 


 프로젝트 생성시 기본적인 셋팅이 되어있는 것을 확인 하실수 있습니다.


 우리는 androidannotations를 셋팅하기위해서 gradle 의 내용을 바꾸어 줘야 합니다.


 


buildscript {

    repositories {

        mavenCentral()

    }

    dependencies {

        // replace with the current version of the Android plugin

        classpath 'com.android.tools.build:gradle:1.0+' // 버전에 맞게 변경.

        // the latest version of the android-apt plugin

        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'

    }

}


repositories {

    mavenCentral()

    mavenLocal()

}


apply plugin: 'android'

apply plugin: 'android-apt'

def AAVersion = '3.3' // 현재 최신버전 3.3으로 되어있으나 버전에 따라 변경.


dependencies {

    compile fileTree(dir: 'libs', include: ['*.jar'])

    compile 'com.android.support:appcompat-v7:22.0.0'

    apt "org.androidannotations:androidannotations:$AAVersion"

    compile "org.androidannotations:androidannotations-api:$AAVersion"

    compile 'org.androidannotations:androidannotations:3.3'

}


apt {

    arguments {

        androidManifestFile variant.outputs[0].processResources.manifestFile

        resourcePackageName '[현재 프로젝트의 패키지]'

    }

}


android {

    compileSdkVersion 21

    buildToolsVersion '22.0.1'


    defaultConfig {

        applicationId "[현재 프로젝트의 패키지]"

        minSdkVersion 9

        targetSdkVersion 21

        versionCode 1

        versionName "1.0"

    }


    buildTypes {

        release {

            minifyEnabled false

            proguardFiles getDefaultProguardFile('proguard-android.txt'),

                    'proguard-rules.txt'

        }

    }


    packagingOptions {

        exclude 'META-INF/ASL2.0'

        exclude 'META-INF/LICENSE'

        exclude 'META-INF/license.txt'

        exclude 'META-INF/NOTICE'

        exclude 'META-INF/notice.txt'

    }


    sourceSets {

        main {

//            manifest.srcFile 'src/main/AndroidManifest.xml'

//            java.srcDirs = ['src/main/java']

//            resources.srcDirs = ['src/main/resources']

//            res.srcDirs = ['src/main/res']

//            assets.srcDirs = ['src/main/assets']

        }

    }




위에 내용으로 바꾸어 줍니다.


 버전에 맞게 내용을 변경 하시면 됩니다.


 그리고 [현재 프로젝트의 패키지]를 자신의 프로젝트에 맞게 변경하시면 됩니다.


 제가 사용하는 패키지는 "tc.wo.mbseo.applyandroidannotations" 이기 때문에 맞게 변경합니다.



apt {

    arguments {

        androidManifestFile variant.outputs[0].processResources.manifestFile

        resourcePackageName 'tc.wo.mbseo.applyandroidannotations'

    }

}



defaultConfig {

        applicationId "tc.wo.mbseo.applyandroidannotations"

        minSdkVersion 9

        targetSdkVersion 21

        versionCode 1

        versionName "1.0"

    }

 


 

 저장한 이후 rebuild project 합니다.

 




 이제 실행하시면 됩니다.






 위와 같이 나오면 정상적으로 적용된것입니다.




  1. dalkomsft02 2015.09.30 22:02 신고

    정말 감사합니다.



 


<a.php>

<?php

echo '감자';

?>



a.php라는 php 파일을 불러오기위해서는 include 라는 명령문을


 쓰신후 뒤에 경로를 입력하시면 됩니다.


include '[파일경로]'



<b.php>

<?php

include 'a.php';

echo '고구마';

?>



이후에 localhost/b.php 를 호출하시면 화면상에


 감자고구마


 라고 쓰여지는 페이지가 뜨는 것을 확인 하실수 있습니다.

http://sqlitebrowser.org/






사이트로 이동하여 os에 맞는 파일을 다운로드 이후 설치합니다.




 


open Database를 선택한 이후 [파일명].db 파일을 선택합니다.





 Browse Data 탭을 선택하시면 db를 확인하실수 있습니다.




 테이블을 선택하시면 만들어져있는 테이블을 확인하실수 있습니다.




 안드로이드 스튜디오에서 타겟에있는 DB 확인하는 방법.


 



아이콘 클릭.





DB 내용을 확인할 타겟을 지정합니다.








이후 File Explorer 를 선택하여 타겟 내부정보를 확인합니다.



경로 data/data/[어플리케이션 패키지]/databases/[지정한 db명].db 선택






db 파일을 선택하여 db 내용을 로컬로 가져와서 확인하시면 됩니다.


db 파일을 확인하는 방법이 궁금하시면,


sqlite database browse사용하기 



으로 가시면 됩니다.





  1. mssmss 2015.07.15 14:26 신고

    실제 단말기는 볼수없게되있네요.. 다른방법이있나요

+ Recent posts

티스토리 툴바