2019. 2. 19. 16:15
<%@ language="VBScript" %>

<%
Response.charset = "utf-8"
Response.ContentType="text/html"
%>

<%
Dim DBCon
Set DBCon = Server.CreateObject("ADODB.Connection")
DBCon.Open "Provider=SQLOLEDB.1;Password=****;Persist Security Info=True;User ID=****;Initial Catalog=****;Data Source=***.***.***.***"
DBCon.Execute("Set Transaction Isolation Level Read Uncommitted")
Server.ScriptTimeOut=300

Dim randKey : randKey = ""
Dim id : id = request("id") '메시지를 받을 userID (DB에서 사용자 검색용)
Dim title : title = Request("title") 'push 메시지 타이틀 (메시지 제목
Dim message : message = Request("message") 'push 메시지 내용
Dim push_service_id : push_service_id = ""
Dim content_available : content_available = "true"
Dim priority : priority = "height"

'안드 푸시요청 URL
PushServerURL = "https://gcm-http.googleapis.com/gcm/send"

'서버용APIKEY
ApplicationAPIKey = "AAAAHLcAjEA:APA91bE****....."

'DB에 저장된 사용자 api를 불러옵니다
Sql = "Select * From devices Where user_id = 1"

Set RS = SERVER.CreateObject("ADODB.Recordset"
RS.CURSORLOCATION = 3
RS.CURSORTYPE = 3
RS.LOCKTYPE = 3     
RS.Open Sql, DBCon

If RS.RecordCount > 0 then  
push_service_id = RS("push_service_id")
End If

RS.close

token = push_service_id
token = """"&token&""""
title = "push messsage title"
message = "push message body"

Set RS = nothing   

'// JSON 조합
'// 문법이 틀릴경우 안됨 (400 에러 납니다)
'// 2명 이상일 경우 "to" => "registration_ids" : ['fdsafd', 'fdasfdsa' ... ] 형식으로 하면 됩니다(한번에 최대 1,000명까지 송신됨)
'// https://firebase.google.com/docs/cloud-messaging/http-server-ref?hl=ko 여기서 메시지 형식 참조
postJSONData = "" & _
"{" & _
" ""to"" : " & token & " " & _
", ""notification"": {" & _
" ""title"" : """ & title & """" & _
" , ""body"" : """ & message & """" & _
" , ""icon"" : """ & "ic_launcher"& """" & _
" , ""color"" : """ & "#rrggbb" & """" & _
" }" & _
" , ""data"": {" & _
" ""title"" : """ & title & """" & _
" , ""message"" : """ & message & """" & _
" , ""randKey"" : """ & "ddddd" & """" & _
" }" & _
"}"

'// 전송
Response.write postJSONData
Set httpObj = Server.CreateObject("WinHttp.WinHttpRequest.5.1")
httpObj.open "POST" , PushServerURL, False
httpObj.SetRequestHeader "Content-Type", "application/json"
httpObj.SetRequestHeader "Authorization", "key=" & ApplicationAPIKey
httpObj.Send postJSONData
httpObj.WaitForResponse

If httpObj.Status = "200" Then
'Response.Write("전송성공 : " & httpObj.ResponseText)
Response.write "{"&Chr(34)&"result"&Chr(34)&":"&Chr(34)&"surceess"&Chr(34)&"}"

Else
'Response.Write("전송실패 : " & httpObj.ResponseText)
Response.write "{"&Chr(34)&"result"&Chr(34)&":"&Chr(34)&"false"&Chr(34)&"}" & httpObj.Status
End If
%>


Posted by 토실토실천재
2019. 1. 23. 09:20


* 문제 

  - 기존 안드로이드 개발을 안하다고 다시 하게 되니 디바이스 기능을 불러오기 위한 권한 정책이 변경

  - 언제 바뀌었나?

    + 마시멜로우 버전 부터 바뀜, 정적 보안 선언에서 => 동적(runtime) 정책 보안으로 변경

  - 코도바 플러그인 참조해서 개발하는 개발자들의 문제가 생김

  - 현재 자료를 찾아봐도 버전을 낮춰서 개발하란 말이 있음

    => 경험상 언제가 문제가 생김 (한국개발자들이 대부분 요따구로 써놨음.. 열받아서 plugin 인 개발을 하고

       테스트 중에 좋은 플러그인을 발견함...새벽까지 작업하다가 다음날 찾음..억울

         


* 해결

  - https://www.npmjs.com/package/cordova-plugin-permission 여기 가면 있음



예제) 플러그인 다운받은 후 아래 예제 참조 하시면 됨.
       저같은 경우는 전화번호를 가져오는 기능이고 
       추후에 sms와 전화걸기 등 여러기능이 연동됩니다.  
 
 



Posted by 토실토실천재
2019. 1. 21. 15:38

* 버그 내용

  - onsen ui 의 대표적 기능인 Tab의 기능에 대해서 버그 발견

  - tabbar를 사용하여 js를 이용하여 setActiveTab 을 지정하는 경우 오류 발생

  

* 버그 현상

  - 첫번째 Tab이 기본적으로 인덱싱 설정되어 문제가 발생하지 않지만

  - n번째 Tab에 강제로 Set하는 과정에서 오류 발생

  - Tab을 초기화 하는 과정에서 속도의 문제로 인한 버그 인정...


* 잠정 해결

  - 어쩔수없이 setTimeout 이라는 땜질을 실행 



var tabbr = page.querySelector("tapTabbar");

// 온센 UI 버그로 인한 setTimeOut 적용

setTimeout(function(){

tabbr.setActiveTab(index);

}, 100);

Posted by 토실토실천재
2018. 12. 16. 20:15


var div = document.getElementById("map_canvas");

var map = plugin.google.maps.Map.getMap(div);

map.one(plugin.google.maps.event.MAP_READY, function(){

console.log("Map init done!"); // DEBUG

$('.page__background')

.not('.page--menu-page__background')

.css('background-color', 'rgba(0,0,0,0)');


$(div).css( "background-color", "rgba(0,0,0,0)" );

});


맵이 onsen UI 에서만 나오지 않을 경우 대처법입니다.

구글맵은 정상적으로 로드되는걸 봐서는 CSS문제인것으로 봐서 위와같이 백그라운드를 초기화 시켜버림


* 단 Onsen UI 나 기타 모바일 프레임워크의 문제는

 웹뷰에서 실행되는 맵이 아니라는점이다. 

 이는 구글맵 자체가 안드로이드 시스템 자체에서 실행되므로

 화면상의 큰 문제를 야기 하더군요


 즉, 모든 화면에 백그라운드로 지도가 표기가 됩니다.

 이는 onsen ui의 페이지 전환시 명확하게 확인 할수 있답니다..

 저는 그래서 코도바 프로젝트에서 JS 버전의 map api 를 사용하는것을 추천합니다...


 웹뷰의 브라우저에서 실행되므로 좀 느리긴 하지만....

'모바일 > Onsen UI' 카테고리의 다른 글

Cordova android Permission 문제 (plugin 적용)  (0) 2019.01.23
Onsen UI tabbar setActiveTab 지정 오류  (0) 2019.01.21
Posted by 토실토실천재