利用剪切板,利用剪切板移动的四个步骤-ESG跨境

利用剪切板,利用剪切板移动的四个步骤

来源网络
来源网络
2022-07-05
点赞icon 0
查看icon 883

利用剪切板,利用剪切板移动的四个步骤利用剪切板写在前面虽然在国内用whatsapp的人不多,但在香港等地方大部分还是用whatsapp,这一章我们来讨论讨论怎么添加表情到whatsapp,也可以看whatsapp的Guide它里面主要介绍的是利用它的lib来集成,有现成的案例,这里就不多说了。我们主要谈论下怎么利用剪切......

利用剪切板,利用剪切板移动的四个步骤




利用剪切板

写在前面

虽然在国内用whatsapp的人不多,但在香港等地方大部分还是用whatsapp,这一章我们来讨论讨论怎么添加表情到whatsapp,也可以看whatsapp的Guide

它里面主要介绍的是利用它的lib来集成,有现成的案例,这里就不多说了。

我们主要谈论下怎么利用剪切板来添加,也就是第二种方法。当然这添加的表情也是来自本地的,如果需要从server获取也可以,但相对来说会麻烦一点,但确实是可以的。

·图片的格式、大小等,请看guide,本文只讨论发国际快递whatsapp

开始

·在Info.plist中添加,

keyLSApplicationQueriesSchemes/key

  array

    stringwhatsapp/string

  /array

我们都知道LSApplicationQueriesSchemes的作用是为了双方测试。加这个可以判断你的手机是否安装了whatsapp。

判断安装,如果没有安装whatsapp return false;

func canSend() Bool {

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

}

使用下面描述的结构将贴纸数据格式化为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,再转成data string的形式

一次只能发快递一个贴纸包

·步骤

我们需要先将数据复制到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 的格式就是上面的格式, 有一点值得说的是:tray_image / image_data 需要转成data string 来存储

  // 就是要把你的image 转化成data,再转换成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来

·如果表情是根据api get获得。一般表情包很小的,可以让server把表情包转换成data string,再派过来。以类似上面send方法中的json格式,然后也可以,这样的话server要做的事就会多一点。

·如果server不想转成data string,那可以让server先将表情包zip,call api get到后,再unzip.unzip后自己再转换成data string,这样也可以。


文章推荐
将 Azure 存储用于 SQL Server 备份和还原,azuresqlserver
领英大师如何导出领英好友资料,领英大师如何导出领英好友资料
开发者以实际案例谈策略游戏中玩家的四类行动
你一定要知道TikTok运营的技巧,教人运营tiktok


特别声明:以上文章内容仅代表作者本人观点,不代表ESG跨境电商观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与ESG跨境电商联系。

搜索 放大镜
韩国平台交流群
加入
韩国平台交流群
扫码进群
欧洲多平台交流群
加入
欧洲多平台交流群
扫码进群
美国卖家交流群
加入
美国卖家交流群
扫码进群
ESG跨境专属福利分享群
加入
ESG跨境专属福利分享群
扫码进群
拉美电商交流群
加入
拉美电商交流群
扫码进群
亚马逊跨境增长交流群
加入
亚马逊跨境增长交流群
扫码进群
《开店大全-全球合集》
《开店大全-主流平台篇》
《开店大全-东南亚篇》
《CD平台自注册指南》
《开店大全-俄罗斯篇》
《韩国站内推广指南》
《韩国热销品预测》
《开店大全-日韩篇》
《开店大全-拉美篇》
《开店大全-欧洲篇》
通过ESG入驻平台,您将解锁
绿色通道,更高的入驻成功率
专业1v1客户经理服务
运营实操指导
运营提效资源福利
平台官方专属优惠
联系顾问

平台顾问

平台顾问 平台顾问

微信扫一扫
马上联系在线顾问

icon icon

小程序

微信小程序

ESG跨境小程序
手机入驻更便捷

icon icon

返回顶部