[안드로이드] FCM PHP 서버 PUSH



서버에서 PHP로 푸쉬메시지를 보내는 코드입니다.


[안드로이드] FCM PHP 서버 PUSH


이전에 사용하던 GCM 서버키를 바꿔주어야 합니다.


function fcm_send($regId, $sendMsg) {

$serverKey = 'AAA...';

$sendMsg = urldecode($sendMsg);

if(is_array($regId)) {

$tokens = $regId;

} else {

$tokens = array();

$tokens[] = $regId;;

}

$message = array( 'message' => $sendMsg );

$fields = array(

'registration_ids' => $tokens,

'data' => $message

);

$headers = array(

'Authorization:key='.$serverKey,

'Content-Type:application/json'

);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, 'https://fcm.googleapis.com/fcm/send');

curl_setopt($ch, CURLOPT_POST, true);

curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($fields));

$result = curl_exec($ch);

if($result === FALSE) {

$result = curl_error($ch);

}

curl_close($ch);

return $result;

}


잘되는군요~


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[안드로이드] API 23 앱 권한 설정


AndroidManifest.xml 에 있는 퍼미션 관련부분을 아래 코드에 적용하면 됩니다.

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

...

checkGranted();

}


@TargetApi(Build.VERSION_CODES.JELLY_BEAN)

public void checkGranted() {

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

if (PackageManager.PERMISSION_GRANTED != checkSelfPermission(Manifest.permission.INTERNET) ||

PackageManager.PERMISSION_GRANTED != checkSelfPermission(Manifest.permission.ACCESS_NETWORK_STATE) ||

PackageManager.PERMISSION_GRANTED != checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) ||

PackageManager.PERMISSION_GRANTED != checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) ||

PackageManager.PERMISSION_GRANTED != checkSelfPermission(Manifest.permission.READ_PHONE_STATE) ||

PackageManager.PERMISSION_GRANTED != checkSelfPermission(Manifest.permission.VIBRATE) ||

PackageManager.PERMISSION_GRANTED != checkSelfPermission(Manifest.permission.CAMERA)

) {

requestPermissions(new String[]{

Manifest.permission.INTERNET,

Manifest.permission.ACCESS_NETWORK_STATE,

Manifest.permission.WRITE_EXTERNAL_STORAGE,

Manifest.permission.READ_EXTERNAL_STORAGE,

Manifest.permission.READ_PHONE_STATE,

Manifest.permission.VIBRATE,

Manifest.permission.CAMERA},1);

} else {

}

}

}

@Override

public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {

super.onRequestPermissionsResult(requestCode, permissions, grantResults);

if (requestCode == 1) {

if (grantResults.length > 0) {

for (int i=0; i<grantResults.length; ++i) {

if (grantResults[i] == PackageManager.PERMISSION_DENIED) {

new AlertDialog.Builder(this).setTitle("알림").setMessage("권한을 허용하셔야 앱을 이용할 수 있습니다.")

.setPositiveButton("종료", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

finish();

}

}).setNegativeButton("권한 설정", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) {

dialog.dismiss();

checkGranted();

}

}).setCancelable(false).show();

return;

}

}

}

}

}

API 버전이 올라가니깐 이래저래 참 귀찮게 만드네요~


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[안드로이드] FileUriExposedException 에러


아래와 같은 에러의 경우가 여러가지 원인이 있겠지만 카메라 촬영 후 앨범에서 여러장 선택해서 전달시 발생한 경우입니다.

E/AndroidRuntime(5472): android.os.FileUriExposedException: file:///storage/0000-0000/DCIM/Camera/20190304_113931_HDR.jpg exposed beyond app through Intent.getData()


이런 경우엔 아래 처럼 onCreate 에 넣어주니 에러가 안나는군요~

StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder(); 

StrictMode.setVmPolicy(builder.build());

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

builder.detectFileUriExposure();

}

API 23 부터 너무 짜증이 나네요~


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[안드로이드] IllegalArgumentException root 에러


API 26 으로 올리고 구글 정책이 얼마나 바뀌었는지 짜증스럽네요~

E/AndroidRuntime(28534): java.lang.IllegalArgumentException: Failed to find configured root that contains


위와 같은 에러시 xml 파일에 아래와 같이 넣어주면 됩니다.


<?xml version="1.0" encoding="utf-8"?>

<paths xmlns:android="http://schemas.android.com/apk/res/android">

    <external-path name="storage/emulated/0" path="."/>

    <root-path name="root" path="."/>

</paths>

하나 하나 풀어나가기 힘들군요~


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[안드로이드] WebView Uncaught TypeError


SDK API 26으로 올렸더니 기존에 잘 동작하던 코드가 제대로 먹히지를 않는군요~

구글이 왜그럴까요~ 점점 짜증나게 만드네요~

버전을 올리면 하위 버전도 호환되게 해야지 제거된 API 들이 은근 많아서 스트레스 받네요~

자바는 이래서 싫어요~

I/chromium(15940): [INFO:CONSOLE(15)] "Uncaught TypeError: window.WebViewCall.setMessage is not a function", source:


위와 같은 메시지가 나오면 아래 처럼 색깔이 들어간 부분을 넣어주면 됩니다.


import android.webkit.JavascriptInterface;

...

mWebView.addJavascriptInterface(new WebViewCall(), "WebViewCall");

...

public class WebViewCall {

@JavascriptInterface

public void setMessage(final String arg, final String arg2) {

...

}

별거 아닐 걸로 환장하는군요~ ㅎ


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[안드로이드] Android Studio gradle 에러


eclipse 에서 안드로이드 스튜디오로 개발툴을 바꾸고 적응하기 힘드네요~

"Could not find com.android.tools.build:gradle:3.3.1." 에러시 File -> Project Structure -> Project 에서 아래 처럼 해주니깐 됩니다.

[안드로이드] Android Studio gradle 에러

이런 오류는 구글링도 이제 힘드네요~


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[안드로이드] Android Studio non-ASCII 에러


기존의 eclipse 에서 개발된 앱소스를 안드로이드 스튜디오에서 import 하려고 하니 아래 처럼 에러가 나면서 불러오지를 못하네요~

"Your project file contains non-ASCII characters."

[안드로이드] Android Studio non-ASCII 에러

이클립스에서는 폴더명이 한글이 있더라도 되던게 안드로이드 스튜디오에서는 안되는가 봅니다.

Google 드라이브 폴더명을 영문으로 바꾸고 불러오니 잘 되는군요~



반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

시놀로지 rsync 백업 크론탭에 등록 방법


Synology 하드디스크의 특정폴더를 USB 외장 하드에 동기화 해주는 방법입니다.

터미널로 접속해서 크론으로 rsync 스크립트가 실행되도록 해봤습니다.


sudo touch /usr/syno/bin/usb-rsync.sh

sudo chmod +x /usr/syno/bin/usb-rsync.sh

sudo vi /usr/syno/bin/usb-rsync.sh


아래 내용으로 저장

#!/bin/sh


rsync -av --delete --exclude '@eaDir' /volume1/원본폴더 /volumeUSB1/usbshare/backup

rsync -av --delete --exclude '@eaDir' /volume2/원본폴더 /volumeUSB1/usbshare/backup


sudo vi /etc/crontab

05  0   *   *   *   root    /usr/syno/bin/usb-rsync.sh

매일 0시 5분 마다 실행되도록 합니다.

시간은 알맞게 고치시면 됩니다.


반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

[안드로이드] targetSDK 26 HttpClient 오류


Android SDK 23 이전에서 잘 동작하던 앱이 26으로 올리니 아래와 같은 오류가 발생합니다.

23 버전부터 제거가 되었다고 하네요~

org.apache.http.legacy.jar 파일을 다운로드 해서 libs 에 추가해 주면 됩니다.

02-22 11:34:12.168: E/AndroidRuntime(8261): at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:169)

02-22 11:34:12.168: E/AndroidRuntime(8261): at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:124)

02-22 11:34:12.168: E/AndroidRuntime(8261): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:366)

02-22 11:34:12.168: E/AndroidRuntime(8261): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560)

02-22 11:34:12.168: E/AndroidRuntime(8261): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:658)

02-22 11:34:12.168: E/AndroidRuntime(8261): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:632)

02-22 11:34:12.168: E/AndroidRuntime(8261): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:621)

https://android.googlesource.com/platform/prebuilts/sdk/+/android-support-test/org.apache.http.legacy

https://android.googlesource.com/platform/prebuilts/sdk/+archive/android-support-test/org.apache.http.legacy.tar.gz



반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,

윈도우10 제품키 종류 확인 방법


내 컴퓨터에 설치된 윈도우의 제품키 종류가 Retail, OEM, MAK 중에 무엇인지 확인하는 방법입니다.

Win + R 누르고 실행에서 cmd 를 입력하고 엔터를 치면 아래 화면 처럼 명령 프롬프트가 나옵니다.

여기에서 slmgr /dlv 입력 후 엔터를 하면 잠시 뒤에 Windows Script Host 창이 뜨면서 라이선스 정보를 알려줍니다.

윈도우10 제품키 종류 확인 방법


그리고 아래는 라이선스 제품키 관련 명령어 입니다.

slmgr /xpr         만료 날짜 확인

slmgr /upk         제품 키 제거

slmgr /cpky      레지스트리에서 제품 키 지우기

slmgr /ipk 제품키      제품키 설치

slmgr /dlv          라이선스 종류 Retail, OEM, MAK 확인



반응형
블로그 이미지

영은파더♥

가상서버호스팅 VPS 리눅스 서버관리 윈도우 IT

,