App은 위챗 애플릿 & 리셋을 불러일으키고 extMsg 값은 계속 {} 문제
수요원
최근 위챗의 애플릿은 앱에서 환기를 지원하고 조작 후 앱으로 되돌아오는 기능을 지원한다.당사의 제품은 수요를 제기했습니다. 현재 클라이언트의 활동 운영 위치가 애플릿 페이지로 이동하는 것을 지원하고 애플릿 단추를 누르면 앱 지정 페이지로 이동하기를 바랍니다.제품은 이 기능이 한 이벤트에서 여러 페이지를 개발하는 문제를 피할 수 있고 위챗 애플릿의 활동도 클라이언트에서 보여줄 수 있다고 말한다.
조사 연구하다
위챗 문서:http://https//open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=21526646437Y6nEC&token=&lang=zh_CN
String appId = "wxd930ea5d5xxxx8f4f"; // AppId
IWXAPI api = WXAPIFactory.createWXAPI(context, appId);
WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();
req.userName = "gh_d43xxxxca31f"; // id
req.path = path; // ,
req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// ,
api.sendReq(req);
public void onResp(BaseResp resp) {
if (resp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {
WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) resp;
String extraData =launchMiniProResp.extMsg; // JsApi navigateBackApplication extraData
}
}
위챗 문서를 보면 사용이 간단하다. 환기할 때 애플릿과 앱을 연결하고 열린 경로를 지정하고 애플릿 버전을 지정하면 된다.리셋 시 애플릿에서 보낸'app-parameter'필드의 내용을 얻을 수 있습니다. app-parameter에 관해서는https://developers.weixin.qq.com/miniprogram/dev/api/launchApp.html애플릿이 필요한 학생이 썼어요.
개발하다
불러일으키다
클라이언트의 원래 운영 위치(예를 들어 흔히 볼 수 있는 윤방 광고 위치)를 침입하지 않고 클릭하여 작은 프로그램의 페이지로 이동하기 위해 우리는 schema 방식으로 이동하고 투명한Activity를 수신자로 하여 파라미터를 받은 후 위챗의 인터페이스를 호출할 계획이다.(내용은 모두 schema의 매개 변수로 전달되며 path에 encode를 주의하십시오)
내부 호출 위챗 인터페이스
public class MiniprogramActivity extends BaseActivity{
public static final int LAUNCH_MINIPROGRAM_SUPPORTED_SDK_667 = 0x25010500;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Intent intent = getIntent();
if (intent != null && dispatchUri(intent)) {
this.finish();
}
}
public boolean dispatchUri(Intent intent) {
String path, miniProgramId, miniprogramType;
path = intent.getData().getQueryParameter("path");
miniProgramId = intent.getData().getQueryParameter("userName");
miniprogramType = intent.getData().getQueryParameter("miniprogramType");
//path decode
if (!TextUtils.isEmpty(path)) {
try {
path = URLDecoder.decode(path, "utf-8");
} catch (UnsupportedEncodingException e) {
}
}
launchMiniProgram(this, miniProgramId, path, miniprogramType);
return true;
}
public void launchMiniProgram(Context context, String miniProgramId, String path,String miniprogramType){
IWXAPI api = WXAPIFactory.createWXAPI(context, appId);
if (!api.isWXAppInstalled()) {
Toast.makeText(context, context.getString(" "), Toast.LENGTH_SHORT).show();
return;
}
//Android 6.6.7 bug, 。 6.6.7
if (!(api.getWXAppSupportAPI() >= LAUNCH_MINIPROGRAM_SUPPORTED_SDK_667)) {
Toast.makeText(context, context.getString(" , "), Toast.LENGTH_SHORT).show();
return;
}
int miniprogramTypeInt = WXMiniProgramObject.MINIPTOGRAM_TYPE_RELEASE;
if (!TextUtils.isEmpty(miniProgramType)) {
if ("1".equals(miniProgramType)) {
miniprogramTypeInt = WXMiniProgramObject.MINIPROGRAM_TYPE_TEST;
} else if ("2".equals(miniProgramType)) {
miniprogramTypeInt = WXMiniProgramObject.MINIPROGRAM_TYPE_PREVIEW;
}
}
WXLaunchMiniProgram.Req miniProgramReq = new WXLaunchMiniProgram.Req();
miniProgramReq.miniprogramType = miniprogramTypeInt;
miniProgramReq.userName = miniProgramId;
miniProgramReq.path = path;
api.sendReq(miniProgramReq);
}
최종 schema 구조:schema://launchMiniProgram?userName=gh_d43f693ca31f&path=common%2fpages&miniprogramType=1
여기서 매개변수
위챗 문서에서 설명한 바와 같이 작은 프로그램에서 앱으로 되돌아오는 것은 작은 프로그램의 버튼을 클릭해야만 되돌아갈 수 있다. 어떻게 버튼을 클릭하여 앱으로 되돌아가고 파라미터를 휴대할 수 있는지 다음과 같은 두 가지 절차가 필요하다.
public void onResp(BaseResp resp) {
if (resp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {
WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) resp;
String extraData =launchMiniProResp.extMsg; // app-parameter value
}
}
이렇게 앱이 받은 내용이 바로 wechat총결산
개발 중에 생긴 구덩이를 주로 말씀드릴게요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.