Fitur ini didukung mulai dari versi baseline 10.1.60 dan yang lebih baru. Client harus mengimplementasikan fitur berbagi dalam kode native.
onShareAppMessage
Definisikan fungsi onShareAppMessage dalam objek Page untuk mengonfigurasi informasi berbagi halaman tersebut.
Secara default, tombol Share muncul di menu pojok kanan atas setiap halaman. Anda dapat meng-override fungsi
onShareAppMessageuntuk menyesuaikan konten berbagi.Fungsi ini dipanggil ketika pengguna mengklik tombol Share.
Penanganan event ini harus mengembalikan sebuah objek untuk menyesuaikan konten berbagi.
Parameter Masukan
Parameter | Tipe | Deskripsi | Versi minimum |
from | String | Sumber pemicu:
| |
target | Object | Jika nilai | |
webViewUrl | String | Jika halaman berisi komponen web-view, parameter ini mengembalikan URL web-view saat ini. |
Nilai kembalian
Nama | Tipe | Wajib | Deskripsi | Versi minimum |
title | String | Ya | Anda dapat menyesuaikan judul berbagi. | N/A |
desc | String | Tidak | Deskripsi berbagi kustom. Karena berbagi ke Weibo mendukung maksimal 140 karakter, deskripsi tidak boleh melebihi batas ini. | N/A |
path | String | Ya | Jalur halaman berbagi kustom. Parameter kustom dalam | N/A |
imageUrl | String | Tidak | Elemen ikon berbagi kustom. Mendukung jalur gambar web, apFilePath, dan jalur relatif. | |
bgImgUrl | String | Tidak | Gambar pratinjau berbagi kustom. Ukuran yang direkomendasikan adalah 750 × 825. Mendukung jalur gambar web, apFilePath, dan jalur relatif. | |
success | Function | Tidak | Callback setelah berbagi berhasil. | |
fail | Function | Tidak | Callback setelah berbagi gagal. |
Contoh kode
Page({
onShareAppMessage() {
return {
title: 'Miniapp Sample',
desc: 'Official miniapp sample demo, showing supported API capabilities and components.',
path: 'page/component/component-pages/view/view?param=123'
};
},
});Memicu berbagi dari halaman
Didukung pada library dasar versi 1.1.0 dan yang lebih baru.
Anda dapat mengatur properti open-type="share" pada komponen button. Ketika pengguna mengklik tombol tersebut, event Page.onShareAppMessage() dipicu dan panel berbagi terbuka. Jika fungsi onShareAppMessage tidak didefinisikan untuk halaman saat ini, mengklik tombol tidak akan berpengaruh apa pun. Untuk informasi selengkapnya, lihat button.
App.onShareAppMessage
Anda dapat mengatur konfigurasi global onShareAppMessage dalam konstruktor App(Object). Jika pengaturan berbagi tingkat halaman tidak dikonfigurasi, pengaturan berbagi global akan digunakan saat berbagi dipanggil.
my.hideShareMenu(Object)
Didukung pada library dasar versi 1.7.0 dan yang lebih baru. Untuk versi sebelumnya, lihat Handle compatibility.
Menyembunyikan tombol share.
Parameter Masukan
Nama | Tipe | Wajib | Deskripsi |
success | Function | Tidak | Fungsi callback untuk pemanggilan yang berhasil. |
fail | Function | Tidak | Fungsi callback untuk pemanggilan yang gagal. |
complete | Function | Tidak | Fungsi callback yang dieksekusi setelah pemanggilan selesai, baik berhasil maupun gagal. |
Contoh kode
my.hideShareMenu();Implementasi ekstensi sisi client
Kerangka kerja miniapp tidak menyediakan fitur berbagi native karena implementasinya sangat dapat dikustomisasi. Oleh karena itu, Anda harus mengimplementasikan fitur ini sendiri.
Implementasi
Ketika berbagi dipicu dari miniapp, JavaScript API (JSAPI)
shareTinyAppMsgdipanggil. API ini meneruskan parameter dari objek yang dikembalikan oleh metodeonShareAppMessagedi JavaScript ke client.Client harus mengimplementasikan plugin JS kustom untuk menangani event
shareTinyAppMsg. Untuk informasi selengkapnya tentang cara mengimplementasikan plugin JS, lihat Android custom JSAPI dan iOS custom JSAPI.
Contoh kode Android
Catatan: Tombol share di menu opsi pojok kanan atas miniapp disembunyikan secara default. Untuk menampilkan tombol ini, Anda harus mengonfigurasi container. Untuk informasi selengkapnya, lihat Container configuration.
Contoh kode berikut menunjukkan cara memicu berbagi di miniapp:
Page({ data: { height: 0, title: 'Thank you for trying it out!\\nWe welcome any feedback' }, onLoad() { const { windowHeight, windowWidth, pixelRatio } = my.getSystemInfoSync(); this.setData({ height: windowHeight * 750 / windowWidth }) }, onShareAppMessage() { return { title: 'Result Page', desc: 'Successfully retrieved the result', myprop: 'hello', // Parameter kustom. Jika bidang dalam dokumen tidak memenuhi kebutuhan Anda, Anda dapat menambahkan lebih banyak sesuai kebutuhan. Parameter ini akan diteruskan ke client. path: 'pages/result/result' } } });Contoh kode berikut menunjukkan plugin H5 sisi client:
package com.mpaas.demo.nebula; import com.alibaba.fastjson.JSONObject; import com.alipay.mobile.antui.dialog.AUNoticeDialog; import com.alipay.mobile.h5container.api.H5BridgeContext; import com.alipay.mobile.h5container.api.H5Event; import com.alipay.mobile.h5container.api.H5EventFilter; import com.alipay.mobile.h5container.api.H5SimplePlugin; public class ShareTinyMsgPlugin extends H5SimplePlugin { private static final String ACTION_SHARE = "shareTinyAppMsg"; @Override public void onPrepare(H5EventFilter filter) { super.onPrepare(filter); filter.addAction(ACTION_SHARE); } @Override public boolean handleEvent(H5Event event, final H5BridgeContext context) { String action = event.getAction(); if (ACTION_SHARE.equals(action)) { JSONObject param = event.getParam(); String title = param.getString("title"); String desc = param.getString("desc"); String myprop = param.getString("myprop"); String path = param.getString("page"); String appId = event.getH5page().getParams().getString("appId"); // Anda dapat memanggil komponen berbagi di sini untuk mengimplementasikan fitur selanjutnya. String message = "App ID: " + appId + "\n" + "title: " + title + "\n" + "desc: " + desc + "\n" + "myprop: " + myprop + "\n" + "path: " + path + "\n"; AUNoticeDialog dialog = new AUNoticeDialog(event.getActivity(), "Sharing Result", message, "Share Successful", "Share Failed"); dialog.setPositiveListener(new AUNoticeDialog.OnClickPositiveListener() { @Override public void onClick() { JSONObject result = new JSONObject(); result.put("success", true); context.sendBridgeResult(result); } }); dialog.setNegativeListener(new AUNoticeDialog.OnClickNegativeListener() { @Override public void onClick() { context.sendError(11, "Share failed"); } }); dialog.show(); // return true; } return false; } }
Contoh kode iOS
Tombol share di pojok kanan atas miniapp disembunyikan secara default. Untuk menampilkan tombol share, panggil antarmuka berikut selama inisialisasi container:
Catatan: Anda harus mengimpor manual file header yang sesuai:
#import <TinyappService/TASUtils.h>.- (void)application:(UIApplication *)application afterDidFinishLaunchingWithOptions:(NSDictionary *)launchOptions { ... [TASUtils sharedInstance].shoulShowSettingMenu = YES; ... }Buat implementasi kustom JSAPI
shareTinyAppMsguntuk menerima parameter dari halaman miniapp:
Dalam kelas implementasi
MPJsApi4ShareTinyAppMsg, Anda dapat memperoleh parameter untuk berbagi halaman miniapp dan menangani logika bisnis Anda. Kode berikut memberikan contoh:#import <NebulaPoseidon/NebulaPoseidon.h> @interface MPJsApi4ShareTinyAppMsg : PSDJsApiHandler @end #import "MPJsApi4ShareTinyAppMsg.h" #import <MessageUI/MessageUI.h> @interface MPJsApi4ShareTinyAppMsg()<APSKLaunchpadDelegate> @property(nonatomic, strong) NSString *shareUrlString; @end @implementation MPJsApi4ShareTinyAppMsg - (void)handler:(NSDictionary *)data context:(PSDContext *)context callback:(PSDJsApiResponseCallbackBlock)callback { [super handler:data context:context callback:callback]; NSString * appId = context.currentSession.createParam.expandParams[@"appId"]; NSString * page = data[@"page"]?:@""; NSString * title = data[@"title"]?:@""; NSString * desc = data[@"desc"]?:@""; // Gabungkan konten berbagi dan panggil SDK berbagi. self.shareUrlString = [NSString stringWithFormat:@"http://appId=%@&page=%@&title=%@&desc=desc", appId, page, title, desc]; [self openPannel]; } - (void)openPannel { NSArray *channelArr = @[kAPSKChannelWeibo, kAPSKChannelWeixin, kAPSKChannelWeixinTimeLine, kAPSKChannelSMS, kAPSKChannelQQ, kAPSKChannelQQZone, kAPSKChannelDingTalkSession, kAPSKChannelALPContact, kAPSKChannelALPTimeLine]; APSKLaunchpad *launchPad = [[APSKLaunchpad alloc] initWithChannels:channelArr sort:NO]; launchPad.tag = 1000; launchPad.delegate = self; [launchPad showForView:[[UIApplication sharedApplication] keyWindow] animated:YES]; } #pragma mark - APSKLaunchpadDelegate - (void)sharingLaunchpad:(APSKLaunchpad *)launchpad didSelectChannel:(NSString *)channelName { [self shareWithChannel:channelName tag:launchpad.tag]; [launchpad dismissAnimated:YES]; } - (void)shareWithChannel:(NSString *)channelName tag:(NSInteger)tag{ APSKMessage *message = [[APSKMessage alloc] init]; message.contentType = @"url"; // Tipe dapat berupa "text", "image", atau "url". message.content = [NSURL URLWithString:self.shareUrlString]; message.icon = [UIImage imageNamed:@"MPShareKit.bundle/Icon_Laiwang@2x.png"]; message.title = @"This is the web page title"; message.desc = @"This is the description"; APSKClient *client = [[APSKClient alloc] init]; client.disableToastDisplay = YES; [client shareMessage:message toChannel:channelName completionBlock:^(NSError *error, NSDictionary *userInfo) { if(!error) { // Berhasil [AUToast presentToastWithin:[[UIApplication sharedApplication] keyWindow] withIcon:AUToastIconSuccess text:@"Share successful" duration:2 logTag:@"demo"]; } else { // Gagal NSString *desc = error.localizedFailureReason.length > 0 ? error.localizedFailureReason : @"Share failed"; [AUToast presentToastWithin:[[UIApplication sharedApplication] keyWindow] withIcon:AUToastIconNone text:desc duration:2 logTag:@"demo"]; NSLog(@"error = %@", error); } }]; } @end