“开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 20 天,点击查看活动详情”
前言
- 打开商品详情页
- 淘宝账号授权登录
- 完成交易闭环
产品闭环的组成要素:市场、转化、留存、口碑
I 打开商品详情页面
调用百川SDK方法,在App内利用百川SDK 自带 webview打开淘宝h5详情页
II 淘宝账号授权登录
电商能力SDK默认会集成淘宝登录SDK功能,无需重复接入 首次交易要授权登录,之后90天内不用再次授权
2.2 集成文档
文档地址: 点击查看 。iOS需要填写BundleID 。BundleID要是当前应用的BundleID。勾选淘宝登录基础包下载SDK。
注意事项:将下载的SDK中的身份图片yw_1222.jpg 复制到xcode工程下,并copy到BundleResources里,注意不能改名。
- 接入文档
2.3 Cocoapod方式引入百川SDK 上
cocoapods 官方source是隐式的需要的,一旦你指定了其他source 你就需要也把官方的指定 请先添加百川的源
pod repo add AliBCSpecs http://repo.baichuan-ios.taobao.com/baichuanSDK/AliBCSpecs.git
然后在你工程的Podfile添加(具体版本以百川开发者网站为准)
source 'http://repo.baichuan-ios.taobao.com/baichuanSDK/AliBCSpecs.git'
pod 'AlibcTradeSDK'
此时注意确保声明
source 'http://repo.baichuan-ios.taobao.com/baichuanSDK/AliBCSpecs.git'
source 'https://github.com/CocoaPods/Specs.git'
III 常见错误
注意事项:将下载的SDK中的身份图片yw_1222.jpg 复制到xcode工程下,并copy到BundleResources里,注意不能改名。
3.2 读取身份图片AppKey失败,
- 请确认图片与BundleID是否匹配." UserInfo={NSLocalizedDescription=读取身份图片AppKey失败, 请确认图片与BundleID是否匹配
我是使用pod 进行管理的,版本是V3.1.1 ,安全图片生成的时候要采用V4
IV iOS小技能: UISearchBar 搜索框使用教程
设置UISearchBar 的_UISearchBarSearchFieldBackgroundView 控件的圆角
+ (UISearchBar*)homesearchBar {
UISearchBar *searchBar = [[UISearchBar alloc]init];
[searchBar setImage:[UIImage imageNamed:@"search"]
forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];
searchBar.placeholder = searchBarPlaceholder;
[searchBar changeLeftPlaceholder:searchBar.placeholder];
// 设置cornerRadius
UIView* backgroundView = [searchBar subViewOfClassName:@"_UISearchBarSearchFieldBackgroundView"];
backgroundView.layer.cornerRadius = 14.50f;
backgroundView.clipsToBounds = YES;
return searchBar;
}
4.1、iOS去掉UISearchBar搜索框的放大镜
UITextField *searchTextField = [searchBar valueForKey:@"_searchField"];
searchTextField.leftView = nil;
V 预备知识
查找子类对象: subViewOfClassName
- (UIView*)subViewOfClassName:(NSString*)className {
for (UIView* subView in self.subviews) {
if ([NSStringFromClass(subView.class) isEqualToString:className]) {
return subView;
}
UIView* resultFound = [subView subViewOfClassName:className];
if (resultFound) {
return resultFound;
}
}
return nil;
}