Cordova与OpenHarmony分享植物功能

欢迎大家加入开源鸿蒙跨平台开发者社区,一起共建开源鸿蒙跨平台生态。

分享功能系统概述

分享功能允许用户与他人分享他们的植物信息和养护经验。在Cordova框架与OpenHarmony系统的结合下,我们需要实现一个完整的分享系统,包括分享内容生成、社交媒体集成和分享统计。

分享内容数据模型

javascript 复制代码
class ShareContent {
    constructor(plantId, shareType) {
        this.id = 'share_' + Date.now();
        this.plantId = plantId;
        this.shareType = shareType; // 'basic', 'detailed', 'photo', 'stats'
        this.createdDate = new Date();
        this.content = '';
        this.imageUrl = null;
        this.shareLinks = {};
    }
}

class ShareManager {
    constructor() {
        this.shares = [];
        this.loadFromStorage();
    }
    
    generateShareContent(plantId, shareType) {
        const plant = plants.find(p => p.id === plantId);
        if (!plant) return null;
        
        const share = new ShareContent(plantId, shareType);
        
        if (shareType === 'basic') {
            share.content = `我在养护一株${plant.name}(${plant.species}),位置在${plant.location}。`;
        } else if (shareType === 'detailed') {
            const stats = new PlantHealthReport(plantId).generateReport();
            share.content = `我的${plant.name}健康评分是${stats.overallScore}/100。`;
        } else if (shareType === 'photo') {
            share.content = `看看我的${plant.name}!`;
        } else if (shareType === 'stats') {
            const wateringCount = wateringManager.getWateringRecordsForPlant(plantId).length;
            share.content = `我已经为${plant.name}浇水${wateringCount}次了。`;
        }
        
        this.shares.push(share);
        this.saveToStorage();
        return share;
    }
}

这个分享功能数据模型定义了ShareContent和ShareManager类。

与OpenHarmony社交媒体的集成

javascript 复制代码
function shareToSocialMedia(shareId, platform) {
    const share = shareManager.shares.find(s => s.id === shareId);
    if (!share) return;
    
    cordova.exec(
        function(result) {
            console.log("已分享到" + platform);
            showToast(`已成功分享到${platform}`);
        },
        function(error) {
            console.error("分享失败:", error);
        },
        "SocialMediaPlugin",
        "share",
        [{
            platform: platform,
            title: '我的植物',
            message: share.content,
            imageUrl: share.imageUrl
        }]
    );
}

function generateShareLink(shareId) {
    const share = shareManager.shares.find(s => s.id === shareId);
    if (!share) return;
    
    cordova.exec(
        function(result) {
            console.log("分享链接已生成");
            share.shareLinks.link = result.link;
            showToast('分享链接已复制到剪贴板');
        },
        function(error) {
            console.error("生成失败:", error);
        },
        "SharePlugin",
        "generateLink",
        [{
            shareId: shareId,
            content: share.content
        }]
    );
}

这段代码展示了如何与OpenHarmony的社交媒体服务集成。

分享内容生成

javascript 复制代码
function renderShareDialog(plantId) {
    const plant = plants.find(p => p.id === plantId);
    
    const dialog = document.createElement('div');
    dialog.className = 'modal-dialog';
    dialog.innerHTML = `
        <div class="modal-content">
            <h3>分享 ${plant.name}</h3>
            <div class="share-options">
                <div class="share-option">
                    <input type="radio" name="share-type" value="basic" checked>
                    <label>基础信息</label>
                </div>
                <div class="share-option">
                    <input type="radio" name="share-type" value="detailed">
                    <label>详细信息</label>
                </div>
                <div class="share-option">
                    <input type="radio" name="share-type" value="photo">
                    <label>照片分享</label>
                </div>
                <div class="share-option">
                    <input type="radio" name="share-type" value="stats">
                    <label>养护统计</label>
                </div>
            </div>
            <textarea id="share-content" placeholder="编辑分享内容"></textarea>
            <div class="share-platforms">
                <button onclick="shareToSocialMedia('${plantId}', 'wechat')">微信</button>
                <button onclick="shareToSocialMedia('${plantId}', 'qq')">QQ</button>
                <button onclick="shareToSocialMedia('${plantId}', 'weibo')">微博</button>
                <button onclick="generateShareLink('${plantId}')">生成链接</button>
            </div>
            <div class="form-actions">
                <button onclick="closeDialog()">关闭</button>
            </div>
        </div>
    `;
    
    document.getElementById('modal-container').appendChild(dialog);
    
    // 生成初始内容
    const shareType = document.querySelector('input[name="share-type"]:checked').value;
    const share = shareManager.generateShareContent(plantId, shareType);
    document.getElementById('share-content').value = share.content;
    
    // 监听分享类型变化
    document.querySelectorAll('input[name="share-type"]').forEach(radio => {
        radio.addEventListener('change', function() {
            const newShare = shareManager.generateShareContent(plantId, this.value);
            document.getElementById('share-content').value = newShare.content;
        });
    });
}

这个函数创建分享对话框,允许用户选择分享类型和平台。

分享统计

javascript 复制代码
class ShareStatistics {
    constructor() {
        this.shareManager = shareManager;
    }
    
    getTotalShares() {
        return this.shareManager.shares.length;
    }
    
    getSharesByType() {
        const counts = {
            basic: 0,
            detailed: 0,
            photo: 0,
            stats: 0
        };
        
        this.shareManager.shares.forEach(share => {
            counts[share.shareType]++;
        });
        
        return counts;
    }
    
    getSharesByPlatform() {
        const counts = {};
        
        this.shareManager.shares.forEach(share => {
            Object.keys(share.shareLinks).forEach(platform => {
                counts[platform] = (counts[platform] || 0) + 1;
            });
        });
        
        return counts;
    }
    
    getMostSharedPlant() {
        const plantCounts = {};
        
        this.shareManager.shares.forEach(share => {
            plantCounts[share.plantId] = (plantCounts[share.plantId] || 0) + 1;
        });
        
        const mostSharedId = Object.keys(plantCounts).reduce((a, b) => 
            plantCounts[a] > plantCounts[b] ? a : b
        );
        
        return plants.find(p => p.id === mostSharedId);
    }
}

这个ShareStatistics类提供了分享的统计功能。

分享历史

javascript 复制代码
function renderShareHistory() {
    const container = document.getElementById('page-container');
    container.innerHTML = `
        <div class="share-history">
            <h2>分享历史</h2>
        </div>
    `;
    
    if (shareManager.shares.length === 0) {
        container.innerHTML += '<p class="empty-message">还没有分享任何内容</p>';
        return;
    }
    
    const historyList = document.createElement('div');
    historyList.className = 'history-list';
    
    shareManager.shares.forEach(share => {
        const plant = plants.find(p => p.id === share.plantId);
        
        const historyItem = document.createElement('div');
        historyItem.className = 'history-item';
        historyItem.innerHTML = `
            <h4>${plant.name}</h4>
            <p>类型: ${share.shareType}</p>
            <p>时间: ${share.createdDate.toLocaleString('zh-CN')}</p>
            <p>内容: ${share.content}</p>
        `;
        
        historyList.appendChild(historyItem);
    });
    
    container.appendChild(historyList);
}

这个函数显示分享历史。

总结

分享功能系统为用户提供了与他人分享植物信息的能力。通过与社交媒体的集成,我们可以帮助用户轻松分享他们的植物养护经验。

相关推荐
世人万千丶19 小时前
鸿蒙跨端框架 Flutter 学习 Day 4:程序生存法则——异常捕获与异步错误处理的熔断艺术
学习·flutter·华为·harmonyos·鸿蒙
IT陈图图1 天前
跨端智慧图书馆:Flutter × OpenHarmony 下的读者管理模块构建实践
flutter·华为·鸿蒙·openharmony
IT陈图图1 天前
基于 Flutter × OpenHarmony 的图书馆管理系统之书籍卡片模块构建
flutter·开源·鸿蒙·openharmony
IT陈图图1 天前
优雅管理,智慧阅读:基于 Flutter × OpenHarmony 构建图书馆读者列表模块
flutter·华为·鸿蒙·openharmony
小学生波波1 天前
HarmonyOS6 - 鸿蒙弹窗选择省市区实战案例
arkts·鸿蒙·arkui·鸿蒙开发·harmonyos6·省市区·级联选择
小白阿龙1 天前
鸿蒙+flutter 跨平台开发——简易井字棋小游戏实现
flutter·华为·harmonyos·鸿蒙
小白阿龙1 天前
鸿蒙+flutter 跨平台开发——Placeholder 控件的基础使用场景
flutter·华为·harmonyos·鸿蒙
IT陈图图1 天前
智慧图书馆的数字名片:基于 Flutter × OpenHarmony 的读者卡片构建实践
flutter·鸿蒙·openharmony
小白阿龙1 天前
鸿蒙+Flutter 跨平台开发——围棋辅助教学APP
flutter·华为·harmonyos·鸿蒙
小白阿龙1 天前
鸿蒙+flutter 跨平台开发——icon控件的响应式适配实现
flutter·华为·harmonyos·鸿蒙