全部产品
Search
文档中心

Mobile Platform as a Service:Bagikan

更新时间:Feb 07, 2026

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 onShareAppMessage untuk 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:

  • button: Dipicu oleh tombol share di halaman.

  • Tombol Share di pojok kanan atas memicu menu.

1.10.0

target

Object

Jika nilai from adalah `button`, maka `target` adalah tombol yang memicu berbagi. Jika tidak, nilainya undefined.

1.10.0

webViewUrl

String

Jika halaman berisi komponen web-view, parameter ini mengembalikan URL web-view saat ini.

1.6.0

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 path dapat diperoleh di metode `onLoad` siklus hidup miniapp. Parameter dikirim sesuai aturan permintaan HTTP GET. Saat Anda mengimplementasikan skenario berbagi di client, nama bidang ini dalam kode native adalah page.

N/A

imageUrl

String

Tidak

Elemen ikon berbagi kustom. Mendukung jalur gambar web, apFilePath, dan jalur relatif.

1.4.0

bgImgUrl

String

Tidak

Gambar pratinjau berbagi kustom. Ukuran yang direkomendasikan adalah 750 × 825. Mendukung jalur gambar web, apFilePath, dan jalur relatif.

1.9.0

success

Function

Tidak

Callback setelah berbagi berhasil.

1.4.0

fail

Function

Tidak

Callback setelah berbagi gagal.

1.4.0

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

Catatan

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)

Catatan

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

  1. Ketika berbagi dipicu dari miniapp, JavaScript API (JSAPI) shareTinyAppMsg dipanggil. API ini meneruskan parameter dari objek yang dikembalikan oleh metode onShareAppMessage di JavaScript ke client.

  2. 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 shareTinyAppMsg untuk menerima parameter dari halaman miniapp: shareTinyAppMsg

  • 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