debug_cat 发表于 2021-3-27 21:27

[ios]ios复制优惠券打开淘宝(连载12)

国际惯例,先看看我们的成果。





### 开发环境

> Xocde 12.4
>
> Swift 5.3
>
> Mac OS 10.15.6



###生成商品优惠券

接口

```shell
https://api.sunofbeach.net/shop/tpwd

post

body:
{
        "title":"商品的title",
        "url":"https: + couponClickUrl"
}

//返回数据
{
    "success": true,
    "code": 10000,
    "message": "淘宝口令构建成功!",
    "data": {
      "tbk_tpwd_create_response": {
            "data": {
                "model": "4¥rm11X0tDlMV¥ https://m.tb.cn/h.4Mybft3亲亲纯蛋糕400g零食早餐速食整箱懒人面包手工鸡蛋糕點营养食品"
            },
            "request_id": "nx55f5sw7i9b"
      }
    }
}
```



编写返回数据的模型

```java
把上面返回的json复制,然后打开软件JSONExport。选择swift,object mapping一件生成。
```



请求接口部分

```swift
func getCoupons() {
      //获取优惠券
      //let paraData = CouponsPara(title: goodsData?.title ?? "", url: goodsData?.couponClickUrl ?? "")
                        //获取优惠券的url
      let clickUrl = goodsData?.couponClickUrl ?? ""
                        //拼接https
      let targetUrl = "https:\(clickUrl)"
      let paraData: NSDictionary = ["title":goodsData?.title ?? "", "url":targetUrl]
      let headers = [
            "Content-Type": "application/json"
      ]
      
      Alamofire.request(UnionApi.getCouponsUrl(), method: .post, parameters: paraData as! Parameters,encoding: JSONEncoding.default, headers: headers).responseObject{(response: DataResponse<CouponsResult>) in
            let data = response.result.value
            //print(data?.data?.tbkTpwdCreateResponse?.data?.model)
            //显示优惠券数据
            if let model = data?.data?.tbkTpwdCreateResponse?.data?.model{
                self.labCouponContent.text = model
            }
      }
}
```



获取成功之后,显示到页面上面就行了。设置text。



### 把优惠券复制到粘贴板和打开淘宝

### !(https://www.moonlightshadow.cn/portal/image/1616850923005_825478130717163520.png)

复制文本到粘贴板很简单

```swift
UIPasteboard.general.string = "需要放到粘贴板的文本"
```

打开一个窗口,让我们选择是否直接打开淘宝

```swift
// 复制到粘贴板中
    @objc func copyToPasteboard(sender: UIButton){
      //UIPasteboard.general.string = self.labCouponContent.text
      let pboard = UIPasteboard.general
      pboard.string = self.labCouponContent.text
      
      let titleStr = "淘口令复制成功,是否跳转到手机淘宝APP?"
      let jumpStr = "taobao://item.taobao.com/item.htm"
      
      
      let alertCtr = UIAlertController.init(title: titleStr, message: nil, preferredStyle: UIAlertController.Style.alert)
      alertCtr.addAction(UIAlertAction.init(title: "取消", style: UIAlertAction.Style.cancel, handler: nil))
      alertCtr.addAction(UIAlertAction.init(title: "确定", style: UIAlertAction.Style.default, handler: { (action) in
            
            if let url = URL.init(string: jumpStr) {
               
                if UIApplication.shared.canOpenURL(url) == true {
                  UIApplication.shared.openURL(url)
                } else {
                  
                  let alertC = UIAlertController.init(title: "您未安装手机淘宝APP,是否前往AppStore下载安装?", message: nil, preferredStyle: UIAlertController.Style.alert)
                  
                  alertC.addAction(UIAlertAction.init(title: "取消", style: UIAlertAction.Style.cancel, handler: nil))
                  alertC.addAction(UIAlertAction.init(title: "确定", style: UIAlertAction.Style.default, handler: { (action: UIAlertAction) in
                        
                        let AppStoreVC = UIViewController.init()
                        AppStoreVC.modalTransitionStyle = UIModalTransitionStyle.coverVertical
                        
                        let webView = UIWebView.init(frame: AppStoreVC.view.bounds)
                        let request = NSURLRequest.init(url: URL.init(string: "itms-apps://itunes.apple.com/cn/app/tao-bao-sui-shi-sui-xiang/id387682726?mt=8")!) //AppStore手机淘宝地址
                        webView.loadRequest(request as URLRequest)
                        AppStoreVC.view.addSubview(webView)
                        
                        self.present(AppStoreVC, animated: true, completion: {
                            AppStoreVC.dismiss(animated: true, completion: nil)
                        })
                  }))
                  self.present(alertC, animated: true, completion: nil)
                  
                }
            }
      }))
      self.present(alertCtr, animated: true, completion: nil)
    }
```

这样打开,是会失败的,我们还需要在`info.plist`中配置一个值,支持打开淘宝和天猫

```shell
LSApplicationQueriesSchemes
Array类型
保存2个值,taobao,tmall
```

代码地址:

https://github.com/cat13954/IOSUiTableViewSample



> 最近比较忙,一个星期没更新了,今天就先到这里先啦
>
> 下一篇文章的内容,应该是显示多个不同类型的商品列表

debug_cat 发表于 2021-3-30 09:02

dxaw2458 发表于 2021-3-29 19:00
好吧 我还是慢慢的先把你的帖子看完先   就一台电脑 win   有ios开发的基础教程没 ?

https://www.bilibili.com/video/BV144411C7Gg
https://www.bilibili.com/video/BV1NJ411T78u/?spm_id_from=333.788.recommend_more_video.1
我是看这2个自学的。
熟悉oc基础,然后熟悉swift的基础,就直接开始写app了。遇到不懂的就查。

debug_cat 发表于 2021-3-27 23:38

如此如何 发表于 2021-3-27 23:35
怎么使用啊 看不懂

开发环境xocde 12,语言swift 5+。
这个iOS的app来的。需要swift基础才好看,如果你有其他语言基础也很好学习的。
你可以翻翻,我个人中心,里面我已经写了10篇文章了,从最开始的页面编写,到现在这样模样。
文章末尾有整个项目的代码。直接下载就行了。

lyl610abc 发表于 2021-3-27 21:33

好家伙,又更新了,太快了吧{:301_997:}

cjc3528 发表于 2021-3-27 21:43

太厉害了,这下就方便了

盐帮仙人 发表于 2021-3-27 21:43

感谢楼主分享

debug_cat 发表于 2021-3-27 22:29

lyl610abc 发表于 2021-3-27 21:33
好家伙,又更新了,太快了吧

离开家里一周了,今天得补回来了,很舒服:lol

debug_cat 发表于 2021-3-27 22:30

cjc3528 发表于 2021-3-27 21:43
太厉害了,这下就方便了

哈哈,我是一个小萌新,如何喜欢一起学习{:1_918:}

lyl610abc 发表于 2021-3-27 22:44

莫问刀 发表于 2021-3-27 22:30
哈哈,我是一个小萌新,如何喜欢一起学习
大佬又开始装萌新了{:301_998:}
我才是真萌新{:301_980:}

Xiao伟 发表于 2021-3-27 22:50

微信中打开复制 会提示跳转吗

99910369 发表于 2021-3-27 23:25

谢谢老板热心分享,~~{:1_893:}

aa361328 发表于 2021-3-27 23:29

感谢分享哈~~~~~~~~~~~~~~~~
页: [1] 2 3
查看完整版本: [ios]ios复制优惠券打开淘宝(连载12)