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

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

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

利用剪切板,利用剪切板移动的四个步骤利用剪切板写在前面虽然在国内用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跨境专属福利分享群
扫码进群
拉美电商交流群
加入
拉美电商交流群
扫码进群
亚马逊跨境增长交流群
加入
亚马逊跨境增长交流群
扫码进群
亚马逊跨境增长交流群
加入
亚马逊跨境增长交流群
扫码进群
拉美电商交流群
加入
拉美电商交流群
扫码进群
《TikTok综合运营手册》
《TikTok短视频运营手册》
《TikTok直播运营手册》
《TikTok全球趋势报告》
《韩国节日营销指南》
《开店大全-全球合集》
《开店大全-主流平台篇》
《开店大全-东南亚篇》
《CD平台自注册指南》
《开店大全-俄罗斯篇》
通过ESG入驻平台,您将解锁
绿色通道,更高的入驻成功率
专业1v1客户经理服务
运营实操指导
运营提效资源福利
平台官方专属优惠

立即登记,定期获得更多资讯

订阅
联系顾问

平台顾问

平台顾问 平台顾问

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

icon icon

小程序

微信小程序

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

icon icon

返回顶部