iOS中分享文字、鏈接、圖片到微信、QQ、SMS最佳實踐

本系列博客是本人的開發筆記。爲了方便討論,本人新建了一個微信羣(iOS技術討論羣),想要加入的,請添加本人微信:zhujinhui207407,【加我前請備註:iOS 】,本人博客http://www.kyson.cn 也在不停的更新中,歡迎一起討論

背景

首先我們來看一下分享的展示頁面,一般來說是個H5:


如果我們使用了WebViewJavascriptBridge 那麼一個簡單的註冊方法應該是這樣的:

//執行分享
[self.webViewJSbridge registerHandler:@"ios_showSharePage" handler:^(id data, WVJBResponseCallback responseCallback) {
//這裏填寫分享的邏輯
}];

其中ios_showSharePage是我們Native和H5約定的js方法。調用我們的方法後,一般會展示出一個如下的分享小提示框:

問題提出

點擊任何一個我們跳轉至相應的平臺分享即可。一開始我們通過這種方式非常愉快的進行着迭代,可是突然有一天產品經理覺得寫死不夠靈活,希望我們支持根據後臺的參數來決定展示哪幾個分享平臺。又後來一個產品覺得點擊去分享,再彈ActionSheet需要用戶點擊兩次,比較麻煩,希望我們能通過一次點擊就能實現分享。於是我們好好梳理了一下這兩個需求,提出如下解決方案:

  1. H5直接給出需要分享的平臺,我們這邊再註冊相應的方法即可
  2. 與後端商定好所有可能的分享平臺,並約定好相應參數即可。

解決方案

對於第一個問題,我們讓H5直接出一個如下的頁面:


在原先的註冊方法中給予參數,從而讓我們調起相應的平臺即可:


上圖給出了H5的data中傳進來的參數,可能看的不是很清楚,這裏打印一下給大家看看:

{
    shareType = 2,
    channels = (
        "wx_moment"
    ),
    thumbUrl = "https://fe.xxxx.cn/marigold/x.0.0/images/xinvitation/share_icon_newx.png",
    shareUrl = "https://mp.xxxx.cn/growth/activityx/transporter/register?channel=invite_url&type=transporter#/invitation/login?inviteCode=644599&inviterName=%E6%9D%8E%E5%AE%87%E6%98%A5",
    title = "邀請您和我一起做達達騎士,首單額外獎8元現金!",
    content = "加入達達騎士成爲衆包配送員,時間自由,多種訂單可選,助您輕鬆月入萬元。"
}

裏面的部分信息打碼處理了,還望大家見諒。
這裏的shareType、channels等參數這裏做個統一解釋:

1.shareType
分享類型

typedef enum : NSUInteger {
    /// 文本
    DDShareTypeText = 0,
    /// 圖片
    DDShareTypePicture = 1,
    /// 鏈接
    DDShareTypeLink = 2,
    /// 小程序
    DDShareTypeMiniProgram = 3,
    /// 拉起小程序
    DDShareTypeLaunchMiniProgram = 4,
} DDShareType; // 支持的分享內容

2.channels
分享平臺,有以下幾種:
wx_session/wx_moment/sms/qq
相信不用做過多解釋。當然,我們也在本地寫了相應枚舉來定義:

typedef enum : NSUInteger {
    /// 短信
    DDSharePlatformSMS = 1,
    /// 微信好友
    DDSharePlatformWXSession = 2,
    /// 微信朋友圈
    DDSharePlatformWXTimeline = 3,
    /// QQ好
    DDSharePlatformQQ = 4,
    /// QQ空間
    DDSharePlatformQzone,
} DDSharePlatfrom; // 支持的分享平臺

寫字符串是爲了幫助H5理解,我們可以在本地解析寫一個轉換函數將字符串轉爲對應的channel。

3.thumbUrl
縮略圖URL,這個相信大家不陌生。不過大家需要注意的是,一般需要將thumbUrl轉換爲NSData類型來使用,因此我們轉換一下即可:

NSData *thumbData = [NSData dataWithContentsOfURL:[NSURL URLWithString:thumbURL]];

4.shareUrl
分享的URL
5.title
分享的標題
6.content
分享的內容

我們拿到如上data後,可以對data進行相應的處理了:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章