위챗 공유 안내서
CSDN 블로그는 Mark Down을 처음 써봐요. 문법이 달라요. 이쪽은 지원하지 않는 게 많아요. 이렇게 됐어요...
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419317340&token=&lang=zh_CN(공식 문서)
1 . ### 사전 준비 작업* 위챗 공유 sdk 준비, 위챗 결제와 같은 sdk * 권한이니 뭐니 * APPID와 앱 번호 같은 등록(앱에 등록하는 것이 가장 좋다. 이렇게 하면 위챗 결제와 위챗 공유가 위챗api 대상을 직접 얻을 수 있다)
public static IWXAPI wXapi;
// ,
wXapi = WXAPIFactory.createWXAPI(this, Constants.WX_APPID);
wXapi.registerApp(Constants.WX_APPID);
2 . ### 프런트엔드 이전의 커뮤니케이션 준비 작업과 위챗 공유는 두 가지 상황으로 나뉘는데...* #### 첫 번째: 로컬 APP 내에서 위챗 공유(전단 필요 없음)
이 경우 팝윈도 레이아웃을 로컬로 만들고 팝윈도 논리와 관련된 클래스를 만들어야 합니다.
위챗 친구와 위챗 모멘트 icon 자원:
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319171&token=&lang=zh_CN주의해야 할 것은 위챗 모멘트의 사진 크기가 600 x 600이므로 미용사를 찾아 처리해야 한다는 것이다
스스로 만든 팝윈도의 클릭 감청을 통해 클릭한 index를 획득하여 위챗 친구인지 위챗 모멘트인지 알 수 있습니다.공유 논리에 전달...
4
JAVA단
/**
*"Android" ,
*API17 , @JavascriptInterface
*webView settings.setJavaScriptEnabled(true);
*/
webView.addJavascriptInterface(new JSInterface (),"Android");
class JSInterface {
@JavascriptInterface
public void shareToWX(String title, String description, String url, String shareIndex, String imgurl){
// , JS
}
}
JS단
해당되는 button | div 등의 구성 요소 onclick에 해당되는 function
var u = navigator.userAgent;
var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android
var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios
if(isAndroid) {
window.Android.shareToWX(" ", " ", url, shareIndex, imgUrl);
} else if(isiOS) {
shareToWX(" ", " ", url, shareIndex, imgUrl);
}
에이전트를 통해 현재 OS를 검색합니다.window.약속한 이름.약속된 호출 방법 이름 (필요한 매개 변수) 을 호출합니다.
JS측에서 전달하는 매개 변수는 바로 위챗으로 필요한 내용을 공유하는 것입니다. html5페이지의 내용이기 때문에 JS를 통해서만 전달할 수 있습니다.
3 . ### api 호출 위챗 공유
WXWebpageObject webpage = new WXWebpageObject();
webpage.webpageUrl = url;
WXMediaMessage msg = new WXMediaMessage(webpage);
msg.title = title;
msg.description = description;
Bitmap bmp = BitmapUtils.getbitmap(imgurl);
Bitmap thumbBmp = Bitmap.createScaledBitmap(bmp, THUMB_SIZE, THUMB_SIZE, true);
bmp.recycle();
msg.thumbData = BitmapUtils.bmpToByteArray(thumbBmp, true);
SendMessageToWX.Req req = new SendMessageToWX.Req();
req.transaction = buildTransaction("webpage");
req.message = msg;
//0 ,1
if (Integer.parseInt(shareIndex) == 0) {
mTargetScene = SendMessageToWX.Req.WXSceneSession;
} else if (Integer.parseInt(shareIndex) == 1) {
mTargetScene = SendMessageToWX.Req.WXSceneTimeline;
}
req.scene = mTargetScene;
MyBaseApplication.wXapi.sendReq(req);
finish();
주의해야 할 것은 공유된 내용 유형에 따라 WXMediaMessage를 만들 때 서로 다른 값을 전송하는 것이다.
예: 웹 페이지 웹 페이지, 텍스트 text 등...
scence 처리...
로컬 pop Window의 클릭 감청 또는 JS단 감청을 통해 전달되는 index를 선택합니다
4 . #### 위챗 공유 결과 리셋 처리 위챗 공유 결과 리셋 처리는 위챗 결제와 유사하므로 반드시com에 있어야 합니다.xxx.xapi 패키지 이름에 고정된 클래스 이름을 만듭니다
위챗 결제는 WXPay Entry Activity입니다.
위챗은 WXEntryActivity를 공유합니다.
위챗 결제 결과 처리 페이지와 마찬가지로 IWXAPIEventHandler 인터페이스를 실현하고... 두 가지 방법을 다시 씁니다.
주요:
@Override
public void onResp(BaseResp baseResp) {
int result = 0;
switch (baseResp.errCode) {
case BaseResp.ErrCode.ERR_OK:
result = R.string.wx_share_notice_success;
break;
case BaseResp.ErrCode.ERR_USER_CANCEL:
result = R.string.wx_share_notice_cancel;
break;
case BaseResp.ErrCode.ERR_AUTH_DENIED:
result = R.string.wx_share_notice_deny;
break;
default:
result = R.string.wx_share_notice_unkown;
break;
}
ToastUtils.show(this, result);
finish();
}
마지막으로 목록 파일에 Activity를 등록해야 하며 추가해야 합니다.android:exported=”true”
OVER…..
5 . #### 코드의 혼동
-keepclassmembers class $ {
public *;
}
-keepattributes *JavascriptInterface*
6 . #### 기타 관련
private String buildTransaction(final String type) {
return (type == null) ? String.valueOf(System.currentTimeMillis()) : type + System.currentTimeMillis();
}
public class BitmapUtils {
public static byte[] bmpToByteArray(final Bitmap bmp, final boolean needRecycle) {
ByteArrayOutputStream output = new ByteArrayOutputStream();
bmp.compress(Bitmap.CompressFormat.PNG, 100, output);
if (needRecycle) {
bmp.recycle();
}
byte[] result = output.toByteArray();
try {
output.close();
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public static Bitmap getbitmap(String imageUri) {
//
Bitmap bitmap = null;
try {
URL myFileUrl = new URL(imageUri);
HttpURLConnection conn = (HttpURLConnection) myFileUrl
.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(is);
is.close();
} catch (OutOfMemoryError e) {
e.printStackTrace();
bitmap = null;
} catch (IOException e) {
e.printStackTrace();
bitmap = null;
}
return bitmap;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.