weapp-share-timeline
1
总安装量
1
周安装量
#53670
全站排名
安装命令
npx skills add https://github.com/dafang/taro-weapp-plugin --skill weapp-share-timeline
Agent 安装分布
trae
1
cursor
1
codex
1
claude-code
1
Skill 文档
微信å°ç¨åºåäº«å°æååå¼åæå
åºç¡åº 2.11.3+ æ¯æï¼Android/iOS 微信 8.0.24+
å¿«éé ç½®
å¯ç¨åäº«å°æåå
页é¢å¿ é¡»åæ¶æ»¡è¶³ä¸¤ä¸ªæ¡ä»¶æè½åäº«å°æååï¼
- å
å¯ç¨”åéç»æå”ï¼å®ç°
onShareAppMessage - åå¯ç¨”åäº«å°æåå”ï¼å®ç°
onShareTimeline
åçå°ç¨åºç¤ºä¾
Page({
// 1. å¿
é¡»å
å¯ç¨"åéç»æå"
onShareAppMessage() {
return {
title: 'å享æ é¢',
path: '/pages/article/index?id=123',
imageUrl: '/images/share.png'
}
},
// 2. åå¯ç¨"åäº«å°æåå"
onShareTimeline() {
return {
title: 'æååå享æ é¢',
query: 'id=123', // 注æï¼ä¸æ¯ pathï¼æ¯ query
imageUrl: '/images/timeline-share.png'
}
}
})
Taro 示ä¾
import Taro, { useShareAppMessage, useShareTimeline } from '@tarojs/taro'
function ArticlePage() {
// 1. å¿
é¡»å
å¯ç¨"åéç»æå"
useShareAppMessage(() => ({
title: 'å享æ é¢',
path: '/pages/article/index?id=123',
imageUrl: '/images/share.png'
}))
// 2. åå¯ç¨"åäº«å°æåå"
useShareTimeline(() => ({
title: 'æååå享æ é¢',
query: 'id=123',
imageUrl: '/images/timeline-share.png'
}))
return <View>æç« å
容</View>
}
export default ArticlePage
onShareTimeline è¿ååæ°
| 屿§ | ç±»å | 说æ |
|---|---|---|
| title | string | å享æ é¢ï¼é»è®¤ä¸ºå°ç¨åºåç§° |
| query | string | èªå®ä¹é¡µé¢è·¯å¾ä¸æºå¸¦çåæ°ï¼å¦ id=123&type=news |
| imageUrl | string | å享å¾ç URLï¼æ¯ææ¬å°æç½ç»å¾ç |
注æï¼onShareTimeline ä½¿ç¨ query èé pathï¼ä¸æ¯æèªå®ä¹é¡µé¢è·¯å¾ã
åé¡µæ¨¡å¼ (Single Page Mode)
ç¨æ·ä»æååæå¼å享çå°ç¨åºé¡µé¢æ¶ï¼è¿å ¥”å页模弔ï¼è¿æ¯ä¸ä¸ªç¹æ®çåéè¿è¡ç¯å¢ã
å页模å¼ç¹ç¹
- åºå®å¯¼èªæ ï¼é¡¶é¨æ¾ç¤ºé¡µé¢ JSON é ç½®çæ é¢ï¼ä¸å¯èªå®ä¹
- åºå®æä½æ ï¼åºé¨æ”åå¾å°ç¨åº”æé®
- åºæ¯å¼ï¼
scene === 1154 - æ ç»å½æï¼ç¨æ·æªç»å½ï¼æ æ³è·åç¨æ·ä¿¡æ¯
- åå¨éç¦»ï¼æ¬å°åå¨ä¸æ®é模å¼ä¸å ±ç¨
æ£æµå页模å¼
// åçå°ç¨åº
const scene = wx.getLaunchOptionsSync().scene
const isSinglePage = scene === 1154
// Taro
import Taro from '@tarojs/taro'
const launchOptions = Taro.getLaunchOptionsSync()
const isSinglePage = launchOptions.scene === 1154
// æä½¿ç¨ wx.getApiCategory (åºç¡åº 2.22.1+)
const apiCategory = wx.getApiCategory()
const isBrowseOnly = apiCategory === 'browseOnly' // æååå¿«ç
§é¡µ
页é¢éé 示ä¾
import Taro, { useLoad } from '@tarojs/taro'
import { View, Text, Button } from '@tarojs/components'
import { useState } from 'react'
function ArticlePage() {
const [isSinglePage, setIsSinglePage] = useState(false)
const [article, setArticle] = useState(null)
useLoad(() => {
const scene = Taro.getLaunchOptionsSync().scene
setIsSinglePage(scene === 1154)
// å页模å¼ä¸ä½¿ç¨æªç»å½è®¿é®æ¹å¼è·åæ°æ®
fetchArticle()
})
const fetchArticle = async () => {
// å页模å¼ä¸æ ç»å½æï¼é使ç¨å
¬å¼æ¥å£
const res = await Taro.request({
url: 'https://api.example.com/public/article',
data: { id: articleId }
})
setArticle(res.data)
}
return (
<View className="article-page">
<View className="content">
<Text>{article?.title}</Text>
<RichText nodes={article?.content} />
</View>
{/* å页模å¼ä¸éèéè¦ç»å½çäº¤äº */}
{!isSinglePage && (
<View className="actions">
<Button onClick={handleLike}>ç¹èµ</Button>
<Button onClick={handleComment}>è¯è®º</Button>
</View>
)}
</View>
)
}
navigationBarFit é ç½®
å¨é¡µé¢ JSON ä¸é
ç½® navigationBarFit æ¥è°æ´é¡¶é¨å¯¼èªæ ä¸é¡µé¢çç¸äº¤ç¶æï¼
{
"navigationBarTitleText": "æç« 详æ
",
"navigationBarFit": "squeezed"
}
| å¼ | 说æ |
|---|---|
float |
å¯¼èªæ æµ®å¨å¨é¡µé¢ä¸æ¹ï¼é»è®¤ï¼ |
squeezed |
页é¢è¢«å¯¼èªæ æ¤åï¼ä»å¯¼èªæ 䏿¹å¼å§å¸å± |
å页模å¼ç¦ç¨è½å
ç¦ç¨çç»ä»¶
| ç»ä»¶ | 说æ |
|---|---|
button open-type |
弿¾è½åæé® |
camera |
ç¸æºç»ä»¶ |
form |
表åç»ä»¶ |
navigator |
导èªç»ä»¶ |
web-view |
ç½é¡µå®¹å¨ |
live-pusher |
ç´ææ¨æµ |
ç¦ç¨ç API
| åç±» | API |
|---|---|
| ç»å½ | wx.loginãwx.checkSessionãwx.getUserInfoãwx.getUserProfile |
| è·¯ç± | wx.navigateToãwx.redirectToãwx.reLaunchãwx.switchTabãwx.navigateBack |
| åªä½ | wx.chooseImageãwx.chooseMediaãwx.chooseVideoãwx.saveImageToPhotosAlbum |
| ä½ç½® | wx.openLocationãwx.chooseLocationãwx.startLocationUpdate |
| æ¯ä» | wx.requestPayment |
| å享 | wx.showShareMenuãwx.hideShareMenuãwx.updateShareMenuãwx.getShareInfo |
| è®¾å¤ | èçãWi-FiãNFCãåªè´´æ¿ãæ«ç ãçµè¯ |
| 广å | ad ç»ä»¶ãwx.createRewardedVideoAdãwx.createInterstitialAd |
å ¶ä»éå¶
- ä¸å 许横å±ä½¿ç¨
- tabBar ä¸ä¼æ¸²æï¼å æ¬èªå®ä¹ tabBarï¼
- æ¬å°åå¨ä¸æ®é模å¼ä¸å ±ç¨
- äºå¼åéå¼å¯æªç»å½è®¿é®
æä½³å®è·µ
1. å 容å页é¢ä¼å
åäº«å°æååéç¨äºçº¯å 容å±ç¤ºåºæ¯ï¼
// æ¨èï¼æç« ãæ°é»ã产å详æ
çå
容页
function ArticlePage() {
useShareTimeline(() => ({
title: article.title,
query: `id=${article.id}`,
imageUrl: article.cover
}))
// ...
}
// 䏿¨èï¼éè¦å¤§é交äºç页é¢
function ShoppingCartPage() {
// è´ç©è½¦éè¦ç»å½ï¼ä¸éååäº«å°æåå
}
2. ä¼é é级
function ContentPage() {
const [isSinglePage, setIsSinglePage] = useState(false)
useLoad(() => {
setIsSinglePage(Taro.getLaunchOptionsSync().scene === 1154)
})
const handleAction = () => {
if (isSinglePage) {
// å页模å¼ä¸å¼å¯¼ç¨æ·æå¼å®æ´å°ç¨åº
Taro.showToast({
title: '请ç¹å»ä¸æ¹"åå¾å°ç¨åº"使ç¨å®æ´åè½',
icon: 'none',
duration: 2000
})
return
}
// æ£å¸¸æ¨¡å¼ä¸æ§è¡æä½
doSomething()
}
return (
<View>
<Button onClick={handleAction}>
{isSinglePage ? 'åå¾å°ç¨åºæä½' : 'ç«å³æä½'}
</Button>
</View>
)
}
3. 使ç¨å ¬å¼ API
// å页模å¼ä¸æ ç»å½æï¼è®¾è®¡å
¬å¼æ¥å£
const fetchData = async (articleId: string) => {
// 使ç¨ä¸éè¦ç»å½çå
¬å¼æ¥å£
const res = await Taro.request({
url: `${API_BASE}/public/articles/${articleId}`,
method: 'GET'
// ä¸ä¼ token
})
return res.data
}
4. å®å ¨åºåéé
function ContentPage() {
const [isSinglePage, setIsSinglePage] = useState(false)
useLoad(() => {
setIsSinglePage(Taro.getLaunchOptionsSync().scene === 1154)
})
return (
<View
className="page"
style={{
// å页模å¼ä¸åºé¨ææä½æ ï¼éè¦é¢å¤ padding
paddingBottom: isSinglePage ? '80px' : 'env(safe-area-inset-bottom)'
}}
>
{/* 页é¢å
容 */}
</View>
)
}
5. äºå¼åæªç»å½è®¿é®
å¦æä½¿ç¨äºå¼åï¼éå¨äºå½æ°ä¸å¼å¯æªç»å½è®¿é®ï¼
// äºå½æ° config.json
{
"permissions": {
"openapi": []
},
"overrideUserSecurityRules": {
"allow": true // å
许æªç»å½è®¿é®
}
}
è¿è¥æ³¨æäºé¡¹
- ç¦æ¢è¯±å¯¼å享ï¼ä¸å¾å¼ºå¶ç¨æ·å享ï¼ä¸å¾å享ç«å³è·å¾å©ç
- å 容宿´æ§ï¼å页模å¼åºåç°å®æ´å 容ï¼ä¸å¾å¼ºå¶ç¨æ·ç¹å»”æå¼å°ç¨åº”
- åè§ä½¿ç¨ï¼æ»¥ç¨å享è½åç¨äºè¥éã诱导çè¡ä¸ºå°è¢«å¹³å°æå»
常è§é®é¢
Q: 为ä»ä¹åäº«å°æååæé®æ²¡åºç°ï¼
A: æ£æ¥ä»¥ä¸å ç¹ï¼
- æ¯å¦åæ¶å®ç°äº
onShareAppMessageåonShareTimeline - å¾®ä¿¡çæ¬æ¯å¦ >= 8.0.24
- åºç¡åºçæ¬æ¯å¦ >= 2.11.3
Q: å页模å¼ä¸å¦ä½è·åç¨æ·æ°æ®ï¼
A: åé¡µæ¨¡å¼æ ç»å½æï¼éè¦ï¼
- å°ç¨æ·ç¸å
³ä¿¡æ¯éè¿
queryåæ°ä¼ é - 使ç¨å ¬å¼æ¥å£è·åæ°æ®
- äºå¼åéå¼å¯æªç»å½è®¿é®
Q: å享å¾çæä»ä¹è¦æ±ï¼
A:
- æ¯ææ¬å°å¾çæç½ç»å¾ç
- å»ºè®®ä½¿ç¨æ£æ¹å½¢å¾çï¼1:1 æ¯ä¾ï¼
- å¾ç大å°å»ºè®®ä¸è¶ è¿ 128KB
宿´ææ¡£
è¯¦è§ reference.md