XE푸시앱 라이믹스 2.0에서 백지화 해결을 하고 싶습니다.
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | PHP 7.2 |
라이믹스 2.0 으로 업데이트를 미뤘던 사이트 미룬 이유가 XE푸시앱에서 백지로 뜨는 문제 때문인데요.
더이상 미룰 수 없고 해서 업데이트를 해서 여기 도움을 받아 해결을 해보고자 업데이트를 했습니다.
제가 정보를 제공해서 해결을 해서 다른 분들께도 해결법을 제공해줬으면 좋겠네요.
서버에는 따로 에러는 발생하지 않습니다.
앱에서 로그로 남기는 에러는 아래가 유일한 에러입니다.
************ App version ************ 6(1.5)************ App source version ************ 17.09************ CAUSE OF ERROR ************ ****regid error**** [Ljava.lang.StackTraceElement;@93fa370 ************ DEVICE INFORMATION *********** Brand: samsung Device: a50 Model: SM-A505N Id: QP1A.190711.020 Product: a50ks ************ FIRMWARE ************ SDK: 29 Release: 10 Incremental: A505NKSU5CTL1
댓글 13
https://xepushapp.com/board_GsJl64/73951
앱제작 가이드에 설명에 로그인 부분에 필요한 위젯입니다.
<?php
/* Copyright (C) NAVER <http://www.navercorp.com> */
/**
* @class login_info
* @author NAVER (developers@xpressengine.com)
* @version 0.1
* @brief Widget to display log-in form
*
* $Pre-configured by using $logged_info
*/
class androidapp_login extends WidgetHandler
{
/**
* @brief Widget execution
* Get extra_vars declared in ./widgets/widget/conf/info.xml as arguments
* After generating the result, do not print but return it.
*/
function proc($args)
{
// Set a path of the template skin (values of skin, colorset settings)
$tpl_path = sprintf('%sskins/%s', $this->widget_path, $args->skin);
Context::set('colorset', $args->colorset);
// Specify a template file
if(Context::get('is_logged')) $tpl_file = 'login_info';
else $tpl_file = 'login_form';
$oAndroidpushappModel = getModel('androidpushapp');
$config_push = $oAndroidpushappModel->get_androidpushapp_config();
$setting_default = "N%^N";
Context::set('change_s', $setting_default);
// Set a flag to check if the https connection is made when using SSL and create https url
$ssl_mode = false;
$useSsl = Context::getSslStatus();
if($useSsl != 'none')
{
if(strncasecmp('https://', Context::getRequestUri(), 8) === 0) $ssl_mode = true;
}
Context::set('ssl_mode',$ssl_mode);
// Compile a template
$oTemplate = &TemplateHandler::getInstance();
return $oTemplate->compile($tpl_path, $tpl_file);
}
}
/* End of file androidapp_login.class.php */
/* Location: ./widgets/androidapp_login/androidapp_login.class.php */
이하는 스킨 중
/widgets/androidapp_login/skins/final/login_form.html
<!--@if($XE_VALIDATOR_MESSAGE)-->
<!--@if($is_iapp == "Y")-->
<script language="JavaScript">
window.webkit.messageHandlers.callbackHandler.postMessage("error={$XE_VALIDATOR_MESSAGE}");
</script>
<!--@else-->
<script>
window.myJs_err.callAndroid_err("{$XE_VALIDATOR_MESSAGE}");
</script>
<!--@end-->
<!--@else-->
<script>
window.myJs_reg.callAndroid_start("ok");
function submit(a,b){
document.getElementById('id').value = a;
document.getElementById('pass').value = b;
document.myform.submit();
return 'ok';
}
</script>
<!--@end-->
<form action="{getUrl('','act','procMemberLogin')}" name="myform" method="post" class="ff" ruleset="@login">
<input type="hidden" name="success_return_url" value="{htmlspecialchars(getRequestUriByServerEnviroment())}" />
<input type="hidden" name="act" value="procMemberLogin" />
<input type="hidden" name="keep_signed" value="Y"/>
<input type="hidden" id="id" name="user_id" value="" />
<input type="password" hidden id="pass" name="password" value=""/>
</form>
이하는
/widgets/androidapp_login/skins/final/login_info.html
<!--@if($is_iapp == "Y")-->
<script language="JavaScript">
window.webkit.messageHandlers.callbackHandler.postMessage("success={$logged_info->member_srl}");
</script>
<!--@else-->
<script language="JavaScript">
window.myJs_reg.callAndroid_reg("{$logged_info->member_srl}","{$logged_info->nick_name}","{$change_s}");
</script>
<!--@end-->
보안설정은 모두 아니오로 해서 사용중 이었습니다.
나머지 아니요로 해보세요.
앱쪽에서 reg_id 는 넘겼지만, 그 이후 reg_id 를 세션이나 그런곳으로 넘겼을때 누락된다던가 그런 현상일지 모릅니다.
아무튼 확인 감사합니다 ( _ _)
네. 저 위젯은 로그인 할때, 혹은 로그인 후 성공할때 이용되는 페이지라 사이트 자체가 아예 안뜨는 것과는 크게 상관 없을 것 같습니다.
ssl 관련 몇군데서 디버그를 찍어도 별 이상은 없어 보이긴 합니다.
관리자페이지에서 로그인 하지 않았을 경우 로그인 창 띄우기를 "예" 로 선택하면
앱실행시 로그인 페이지가 뜨게 됩니다.
-->> 이때 백지가 아닌 웹이 아닌 앱의 로그인 창이 잘 뜹니다. 로그인도 잘됩니다.( 관리자 페이지에서 로그인으로 동기화 된 것으로 확인)
-->> 로그인 후 웹사이트가 표시되어 야 하는데 백지입니다.
웹뷰에서 컨테츠를 불러오는 것에서 전혀 안되고 있는 것으로 보입니다.
1.9 버전(정상동작) 하는 곳의 푸시앱 모듈에 디버그출력을 함수마다 해보고
2.0 버전(백지) 에서 푸시앱 모듈에 함수마다 디버그 출력을 함수마다 해봤습니다.
디버그가 찍히면서 어디 코어를 거쳤는지 라인을 찍어주는데요.
2.0 백지가 나오는 디버그는 정상보다 디버그가 두개 정도 덜 찍힙니다.
마지막 경유한 코어의 라인수가 찍힌게
https://github.com/rhymix/rhymix/blob/master/classes/module/ModuleObject.class.php#L687
https://github.com/rhymix/rhymix/blob/master/classes/module/ModuleHandler.class.php#L647
위 두 라인을 경유하는 것으로 찍히는데요.
위 두 파일에서 변경사항이 푸시앱이 화면을 출력하지 못한 원인이 될 것 같은데 비교를 해도 잘 모르겠습니다.
https://github.com/rhymix/rhymix/issues/1664#issuecomment-805508891
참고로, 푸시앱에서 요구하는 설치 위젯페이지 3개는 모두 레이아웃 미사용과 모바일뷰 사용 체크를 하게 되어있습니다.
앱소스