AppsPortfolio为了展示开发者的多个应用以进行跨推广。这是一种离线方式向用户介绍其他应用,也可以了解用户对哪些应用更感兴趣。我一直在我的所有iOS应用中使用这个UI进行跨推广。这是一个完整的工程,但也欢迎任何改进。
在plist数据中,如果只有一类,例如游戏,那么顶部将不会显示分段标签。要显示带有类别的分段标签,您必须提供至少2个应用类别。请检查plist文件结构以了解如何提供应用列表。
特点
- 展示应用以进行跨推广
- 代理以集成分析,查看用户在应用商店中访问哪个应用
- 适用于iPhone和iPad
示例
在UIViewController中集成
let bundle = Bundle(for: AppsPortfolioViewController.self)
let storyboard = UIStoryboard(name: "AppsPortfolio", bundle: bundle)
let appsPortfolioVC = storyboard.instantiateInitialViewController() as! AppsPortfolioViewController
appsPortfolioVC.title = "Portfolio"
appsPortfolioVC.loadAppList(name: "sample_portfolio")
self.navigationController?.pushViewController(appsPortfolioVC, animated: true)
如果默认隐藏导航栏,则在左上角添加自定义返回按钮
let backButton = UIButton(frame: CGRect(x: 10, y: 7, width: 74, height: 30))
backButton.setImage(UIImage(named: "btnBack"), for: UIControlState.normal)
backButton.addTarget(self, action: #selector(goBackFromPortfolio), for: UIControlEvents.touchUpInside)
appsPortfolioVC.view.addSubview(backButton)
@objc private func goBackFromPortfolio(){
self.navigationController?.popViewController(animated: true)
}
实现代理以在用户点击应用时通知
let bundle = Bundle(for: AppsPortfolioViewController.self)
let storyboard = UIStoryboard(name: "AppsPortfolio", bundle: bundle)
let appsPortfolioVC = storyboard.instantiateInitialViewController() as! AppsPortfolioViewController
appsPortfolioVC.title = "Portfolio"
//assigning analytics delegates
appsPortfolioVC.setAnalyticsDelegate(any: self)
appsPortfolioVC.loadAppList(name: "sample_portfolio")
self.navigationController?.pushViewController(appsPortfolioVC, animated: true)
需要实现一个代理方法来了解用户交互
extension ViewController : AppsPortfolio.Analytics{
func appClicked(appNamed: String) {
print("App: \(appNamed) clicked.")
}
}
sample_portfolio.plist文件结构
在iOS应用程序中的使用
可以使用以下任一方式:
- 将AppsPortfolio/Sources文件夹拖动到您的Xcode项目中。
或者
- 使用CocoaPods或Swift包管理器将AppsPortfolio作为依赖关系包含到项目中。
pod 'AppsPortfolio'
-
在您的项目中创建一个新的apps_portfolio.plist文件,并为您提供的应用列表。请参考AppsPortfolio/Data中提供的sample_portfolio.plist文件格式。
-
在您的项目中添加您的交叉推广应用的图标,并在plist文件中提及它们。最好使用Images.assets来添加应用的图标。
有问题或反馈?
请随时新建问题,或在Twitter上找到我@mahmudahsan。