利用剪切板,利用剪切板移動(dòng)的四個(gè)步驟-ESG跨境

利用剪切板,利用剪切板移動(dòng)的四個(gè)步驟

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

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

利用剪切板,利用剪切板移動(dòng)的四個(gè)步驟




利用剪切板

寫在前面

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

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

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

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

開始

·在Info.plist中添加,

keyLSApplicationQueriesSchemes/key

  array

    stringwhatsapp/string

  /array

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

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

func canSend() Bool {

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

}

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

{

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ā)快遞一個(gè)貼紙包

·步驟

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

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

代碼

import UIKit

struct Interoperability {

  // whatsapp guide 中說不要包含這個(gè)Id.

  private static let DefaultBundleIdentifier: String = WA.WAStickersThirdParty

  private static let PasteboardExpirationSeconds: TimeInterval = 60

  // 請(qǐng)保持這個(gè).

  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://)!)

  }

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

  // 就是要把你的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要做的事就會(huì)多一點(diǎn)。

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


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


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

搜索 放大鏡
韓國平臺(tái)交流群
加入
韓國平臺(tái)交流群
掃碼進(jìn)群
歐洲多平臺(tái)交流群
加入
歐洲多平臺(tái)交流群
掃碼進(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)群
《TikTok官方運(yùn)營干貨合集》
《TikTok綜合運(yùn)營手冊(cè)》
《TikTok短視頻運(yùn)營手冊(cè)》
《TikTok直播運(yùn)營手冊(cè)》
《TikTok全球趨勢報(bào)告》
《韓國節(jié)日營銷指南》
《開店大全-全球合集》
《開店大全-主流平臺(tái)篇》
《開店大全-東南亞篇》
《CD平臺(tái)自注冊(cè)指南》
通過ESG入駐平臺(tái),您將解鎖
綠色通道,更高的入駐成功率
專業(yè)1v1客戶經(jīng)理服務(wù)
運(yùn)營實(shí)操指導(dǎo)
運(yùn)營提效資源福利
平臺(tái)官方專屬優(yōu)惠

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

訂閱
聯(lián)系顧問

平臺(tái)顧問

平臺(tái)顧問 平臺(tái)顧問

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

icon icon

小程序

微信小程序

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

icon icon

返回頂部

【免費(fèi)領(lǐng)取】全球跨境電商運(yùn)營干貨 關(guān)閉
進(jìn)行中
進(jìn)行中
TikTok運(yùn)營必備干貨包
包含8個(gè)TikTok最新運(yùn)營指南(市場趨勢、運(yùn)營手冊(cè)、節(jié)日攻略等),官方出品,專業(yè)全面!
免費(fèi)領(lǐng)取
進(jìn)行中
進(jìn)行中
韓國電商節(jié)日營銷指南
10+韓國電商重要營銷節(jié)點(diǎn)詳細(xì)解讀;2024各節(jié)日熱度選品助力引爆訂單增長;8大節(jié)日營銷技巧輕松撬動(dòng)大促流量密碼。
免費(fèi)領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——全球合集
涵括全球100+個(gè)電商平臺(tái)的核心信息,包括平臺(tái)精煉簡介、競爭優(yōu)勢、熱銷品類、入駐要求以及入駐須知等關(guān)鍵內(nèi)容。
立即領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——主流平臺(tái)篇
火爆全球的跨境電商平臺(tái)合集,平臺(tái)優(yōu)勢、開店選品、入駐條件盡在掌握
立即領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——拉美篇
涵蓋9大熱門拉美電商平臺(tái),成熟的市場是跨境賣家的熱門選擇!
立即領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——日韓篇
涵蓋10+日韓電商平臺(tái),入駐條件一看就懂,優(yōu)勢熱銷品應(yīng)有盡有
立即領(lǐng)取
進(jìn)行中
進(jìn)行中
全球平臺(tái)詳解——?dú)W洲篇
涵蓋20+歐洲電商平臺(tái),詳細(xì)解讀優(yōu)勢、入駐條件、熱銷品等
立即領(lǐng)取