利用剪切板,利用剪切板移動的四個步驟-ESG跨境

利用剪切板,利用剪切板移動的四個步驟

來源網(wǎng)絡(luò)
來源網(wǎng)絡(luò)
2022-07-05
點(diǎn)贊icon 0
查看icon 1039

利用剪切板,利用剪切板移動的四個步驟利用剪切板寫在前面雖然在國內(nèi)用whatsapp的人不多,但在香港等地方大部分還是用whatsapp,這一章我們來討論討論怎么添加表情到whatsapp,也可以看whatsapp的Guide它里面主要介紹的是利用它的lib來集成,有現(xiàn)成的案例,這里就不多說了。我們主要談?wù)撓略趺蠢眉羟?.....

利用剪切板,利用剪切板移動的四個步驟




利用剪切板

寫在前面

雖然在國內(nèi)用whatsapp的人不多,但在香港等地方大部分還是用whatsapp,這一章我們來討論討論怎么添加表情到whatsapp,也可以看whatsapp的Guide

它里面主要介紹的是利用它的lib來集成,有現(xiàn)成的案例,這里就不多說了。

我們主要談?wù)撓略趺蠢眉羟邪鍋硖砑?,也就是第二種方法。當(dāng)然這添加的表情也是來自本地的,如果需要從server獲取也可以,但相對來說會麻煩一點(diǎn),但確實(shí)是可以的。

·圖片的格式、大小等,請看guide,本文只討論發(fā)國際快遞whatsapp

開始

·在Info.plist中添加,

keyLSApplicationQueriesSchemes/key

  array

    stringwhatsapp/string

  /array

我們都知道LSApplicationQueriesSchemes的作用是為了雙方測試。加這個可以判斷你的手機(jī)是否安裝了whatsapp。

判斷安裝,如果沒有安裝whatsapp return false;

func canSend() Bool {

    return UIApplication.shared.canOpenURL(URL(string: whatsapp://)!)

}

使用下面描述的結(jié)構(gòu)將貼紙數(shù)據(jù)格式化為JSON對象,

{

ios_app_store_link : String,

android_play_store_link : String,

identifier : String,

name : String,

publisher : String,

tray_image : String, (Base64 representation of the PNG, not WebP, data of the tray image)

stickers : [

  {

   image_data : String, (Base64 representation of the WebP, not PNG, data of the sticker image)

   emojis : [String, String] (Array of emoji strings. Maximum of 3 emoji)

  }

]

}

·重要

tray_image使用PNG,而image_data使用WebP,再轉(zhuǎn)成data string的形式

一次只能發(fā)快遞一個貼紙包

·步驟

我們需要先將數(shù)據(jù)復(fù)制到Pasteboard

然后再打開whatsapp://stickerPack,它會跳到whatsapp,之后whatsapp會自己從Pasteboard中獲取sticker

代碼

import UIKit

struct Interoperability {

  // whatsapp guide 中說不要包含這個Id.

  private static let DefaultBundleIdentifier: String = WA.WAStickersThirdParty

  private static let PasteboardExpirationSeconds: TimeInterval = 60

  // 請保持這個.

  private static let PasteboardStickerPackDataType: String = net.whatsapp.thirdparty.stickerpack

  private static let WhatsAppURL: URL = URL(string: whatsapp://stickerPack)!

  static var iOSAppStoreLink: String = https://itunes.apple.com....;

  static var AndroidStoreLink: String = https://play.google.com/....;

  static func canSend() Bool {

    return UIApplication.shared.canOpenURL(URL(string: whatsapp://)!)

  }

  // 這個json 的格式就是上面的格式, 有一點(diǎn)值得說的是:tray_image / image_data 需要轉(zhuǎn)成data string 來存儲

  // 就是要把你的image 轉(zhuǎn)化成data,再轉(zhuǎn)換成String.

  static func send(json: [String: Any]) Bool {

    // 判斷id 是否合法

    if let bundleIdentifier = Bundle.main.bundleIdentifier {

      if bundleIdentifier.contains(DefaultBundleIdentifier) {

        fatalError(Your bundle identifier must not include the default one.);

      }

    }

    let pasteboard: UIPasteboard = UIPasteboard.general

    var jsonWithAppStoreLink: [String: Any] = json

    jsonWithAppStoreLink[ios_app_store_link] = iOSAppStoreLink

    jsonWithAppStoreLink[android_play_store_link] = AndroidStoreLink

    guard let dataToSend = try  JSONSerialization.data(withJSONObject: jsonWithAppStoreLink, options: []) else {

      return false

    }

    // 從iOS 10 開始Pasteboard,有新的api

    if #available(iOS 10.0, *) {

      pasteboard.setItems([[PasteboardStickerPackDataType: dataToSend]], options: [UIPasteboardOption.localOnly: true, UIPasteboardOption.expirationDate: NSDate(timeIntervalSinceNow: PasteboardExpirationSeconds)])

    } else {

      pasteboard.setData(dataToSend, forPasteboardType: PasteboardStickerPackDataType)

    }

    DispatchQueue.main.async {

      if canSend() {

        if #available(iOS 10.0, *) {

          UIApplication.shared.open(WhatsAppURL, options: [:], completionHandler: nil)

        } else {

          UIApplication.shared.openURL(WhatsAppURL)

        }

      }

    }

    return true

  }

}

從server來

·如果表情是根據(jù)api get獲得。一般表情包很小的,可以讓server把表情包轉(zhuǎn)換成data string,再派過來。以類似上面send方法中的json格式,然后也可以,這樣的話server要做的事就會多一點(diǎn)。

·如果server不想轉(zhuǎn)成data string,那可以讓server先將表情包zip,call api get到后,再unzip.unzip后自己再轉(zhuǎn)換成data string,這樣也可以。


文章推薦
將 Azure 存儲用于 SQL Server 備份和還原,azuresqlserver
領(lǐng)英大師如何導(dǎo)出領(lǐng)英好友資料,領(lǐng)英大師如何導(dǎo)出領(lǐng)英好友資料
開發(fā)者以實(shí)際案例談策略游戲中玩家的四類行動
你一定要知道TikTok運(yùn)營的技巧,教人運(yùn)營tiktok


特別聲明:以上文章內(nèi)容僅代表作者本人觀點(diǎn),不代表ESG跨境電商觀點(diǎn)或立場。如有關(guān)于作品內(nèi)容、版權(quán)或其它問題請于作品發(fā)表后的30日內(nèi)與ESG跨境電商聯(lián)系。

搜索 放大鏡
韓國平臺交流群
加入
韓國平臺交流群
掃碼進(jìn)群
歐洲多平臺交流群
加入
歐洲多平臺交流群
掃碼進(jìn)群
美國賣家交流群
加入
美國賣家交流群
掃碼進(jìn)群
ESG跨境專屬福利分享群
加入
ESG跨境專屬福利分享群
掃碼進(jìn)群
拉美電商交流群
加入
拉美電商交流群
掃碼進(jìn)群
亞馬遜跨境增長交流群
加入
亞馬遜跨境增長交流群
掃碼進(jìn)群
亞馬遜跨境增長交流群
加入
亞馬遜跨境增長交流群
掃碼進(jìn)群
拉美電商交流群
加入
拉美電商交流群
掃碼進(jìn)群
ESG獨(dú)家招商-PHH GROUP賣家交流群
加入
ESG獨(dú)家招商-PHH GROUP賣家交流群
掃碼進(jìn)群
2025跨境電商營銷日歷
《2024年全球消費(fèi)趨勢白皮書——美國篇》
《2024TikTok出海達(dá)人營銷白皮書》
《Coupang自注冊指南》
《eMAG知識百科》
《TikTok官方運(yùn)營干貨合集》
《韓國節(jié)日營銷指南》
《開店大全-全球合集》
《TikTok綜合運(yùn)營手冊》
《TikTok短視頻運(yùn)營手冊》
通過ESG入駐平臺,您將解鎖
綠色通道,更高的入駐成功率
專業(yè)1v1客戶經(jīng)理服務(wù)
運(yùn)營實(shí)操指導(dǎo)
運(yùn)營提效資源福利
平臺官方專屬優(yōu)惠

立即登記,定期獲得更多資訊

訂閱
聯(lián)系顧問

平臺顧問

平臺顧問 平臺顧問

微信掃一掃
馬上聯(lián)系在線顧問

icon icon

小程序

微信小程序

ESG跨境小程序
手機(jī)入駐更便捷

icon icon

返回頂部

【免費(fèi)領(lǐng)取】全球跨境電商運(yùn)營干貨 關(guān)閉
進(jìn)行中
進(jìn)行中
2025跨境電商營銷日歷
包括傳統(tǒng)中、外重要節(jié)日及重點(diǎn)電商營銷節(jié)點(diǎn)還對營銷關(guān)鍵市場、選品輔以說明,讓你的365天安排的明明白白!
免費(fèi)領(lǐng)取
進(jìn)行中
進(jìn)行中
【平臺干貨】eMAG知識百科
涵蓋從開店到大賣6個板塊:開店、運(yùn)營、廣告、選品、上架、物流
免費(fèi)領(lǐng)取
進(jìn)行中
進(jìn)行中
TikTok運(yùn)營必備干貨包
包含8個TikTok最新運(yùn)營指南(市場趨勢、運(yùn)營手冊、節(jié)日攻略等),官方出品,專業(yè)全面!
免費(fèi)領(lǐng)取
進(jìn)行中
進(jìn)行中
韓國coupang平臺自注冊指南
韓國Coupang電商平臺從注冊準(zhǔn)備、提交申請到完成注冊,開店全流程詳細(xì)指引。
免費(fèi)領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺詳解——全球合集
涵括全球100+個電商平臺的核心信息,包括平臺精煉簡介、競爭優(yōu)勢、熱銷品類、入駐要求以及入駐須知等關(guān)鍵內(nèi)容。
立即領(lǐng)取
進(jìn)行中
進(jìn)行中
韓國電商節(jié)日營銷指南
10+韓國電商重要營銷節(jié)點(diǎn)詳細(xì)解讀;2024各節(jié)日熱度選品助力引爆訂單增長;8大節(jié)日營銷技巧輕松撬動大促流量密碼。
免費(fèi)領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺詳解——?dú)W洲篇
涵蓋20+歐洲電商平臺,詳細(xì)解讀優(yōu)勢、入駐條件、熱銷品等
立即領(lǐng)取