2018-08-10

ATONE TREE

.
├── ATONE.md
├── Common
│ ├── AppDelegate.swift (入口)
│ ├── Constants.swift(公共约束)
│ └── Util.swift(工具类)
├── Define(公有定义)
│ ├── AnalyticsScreen.swift
│ ├── Common.swift
│ ├── ErrorMessages.swift
│ ├── NotificationKey.swift
│ ├── OKMessages.swift
│ ├── ReproEventName.swift
│ ├── ReproKey.swift
│ ├── Strings.swift
│ └── UserProfileKeys.swift
├── Models
│ └── CoreData (Billing、Pending、Refund、Shop、Transaction is deprecated in Aftee)
│ ├── Announcement+CoreDataClass.swift
│ ├── Announcement+CoreDataProperties.swift
│ ├── Billing+CoreDataClass.swift
│ ├── Billing+CoreDataProperties.swift
│ ├── BillingAddress+CoreDataClass.swift
│ ├── BillingAddress+CoreDataProperties.swift
│ ├── Item+CoreDataClass.swift
│ ├── Item+CoreDataProperties.swift
│ ├── Member+CoreDataClass.swift
│ ├── Member+CoreDataProperties.swift
│ ├── NSManagedObjectExtensions.swift
│ ├── NotificationSetting+CoreDataClass.swift
│ ├── NotificationSetting+CoreDataProperties.swift
│ ├── OtherRevenue+CoreDataClass.swift
│ ├── OtherRevenue+CoreDataProperties.swift
│ ├── Pending+CoreDataClass.swift
│ ├── Pending+CoreDataProperties.swift
│ ├── Refund+CoreDataClass.swift
│ ├── Refund+CoreDataProperties.swift
│ ├── Shop+CoreDataClass.swift
│ ├── Shop+CoreDataProperties.swift
│ ├── Transaction+CoreDataClass.swift
│ ├── Transaction+CoreDataProperties.swift
│ ├── UserPoint+CoreDataClass.swift
│ └── UserPoint+CoreDataProperties.swift
├── Utils
│ ├── API (网络请求模块)
│ │ ├── APIConnector.swift
│ │ ├── APIDefines.swift
│ │ └── HTTPRequestOperationManager.swift
│ ├── Category(拓展)
│ │ ├── NSLayoutConstraint+Addition.swift
│ │ ├── NSManagedObjectContext+Addition.swift
│ │ ├── NavigationBar+Tabbar.swift
│ │ ├── String+Addition.swift
│ │ ├── String+Validate.swift
│ │ ├── UIButton+Addition.swift
│ │ ├── UIImage+Addition.swift
│ │ ├── UIScreen+Addition.swift
│ │ ├── UIView+Addition.swift
│ │ └── UIWindow+Addition.swift
│ ├── CoreData
│ │ └── CoreData.swift
│ └── Manager(管理模块)
│ ├── Analytics
│ │ └── AnalyticsManager.swift
│ ├── CustomAlert(自定义 Alert)
│ │ └── CustomAlertViewManager.swift
│ ├── Menu(Menu 管理,将 Menu 的点击事件统一管理)
│ │ └── MenuManager.swift
│ ├── New\ Group
│ │ └── ReproManager.swift
│ ├── Notification(Push 管理,将所有的 Push 集中处理,选择是进行跳转还是做本地存储)
│ │ └── NotificationManager.swift
│ └── TouchID(管理 Touch ID,返回认证情况,以方便管理)
│ └── TouchIDManager.swift
└── Views
├── BaseModule
│ ├── CollectionView
│ │ └── CollectionViewCell
│ │ ├── BaseCollectionViewCell.swift
│ │ └── BaseCollectionViewCell.xib
│ ├── NavigationController
│ │ ├── NavigationController.swift
│ │ └── NavigationController.xib
│ ├── TabBar
│ │ ├── TabBarViewController.swift
│ │ └── TabBarViewController.xib
│ ├── TableView
│ │ └── TableViewCell
│ │ ├── BaseTableViewCell.swift
│ │ └── BaseTableViewCell.xib
│ └── WebView
│ ├── ATNWebViewController.xib
│ ├── FAQWebViewController.swift
│ ├── FAQWebViewController.xib
│ ├── WebViewController.swift
│ └── WebViewController.xib
├── BaseView
│ ├── AfterLogin
│ │ ├── Announcement
│ │ │ ├── ATNAnnouncementViewController.xib
│ │ │ ├── AnnouncementViewController.swift
│ │ │ ├── AnnouncementViewController.xib
│ │ │ ├── Cell
│ │ │ │ └── AnnouncementCollectionViewCell.swift
│ │ │ └── Detail
│ │ │ ├── ATNAnnouncementDetailViewController.xib
│ │ │ ├── AnnouncementDetailViewController.swift
│ │ │ ├── AnnouncementDetailViewController.xib
│ │ │ └── View
│ │ │ └── AnnouncementDetailView.swift
│ │ ├── History
│ │ │ ├── ATNHistoryViewController.xib
│ │ │ ├── Cell
│ │ │ │ ├── CollectionHeaderView.swift
│ │ │ │ ├── CollectionHeaderView.xib
│ │ │ │ ├── HistoryCollectionViewCell.swift
│ │ │ │ ├── HistoryCollectionViewCell.xib
│ │ │ │ ├── HistoryTableViewCell.swift
│ │ │ │ └── HistoryTableViewCell.xib
│ │ │ ├── Detail
│ │ │ │ ├── Cell
│ │ │ │ │ ├── HistoryDetailCollectionViewCell.swift
│ │ │ │ │ ├── HistoryDetailCollectionViewCell.xib
│ │ │ │ │ ├── HistoryDetailFeeCell.swift (is deprecated in Aftee)
│ │ │ │ │ ├── HistoryDetailFeeCell.xib(is deprecated in Aftee)
│ │ │ │ │ ├── HistoryDetailFooterCell.swift(is deprecated in Aftee)
│ │ │ │ │ ├── HistoryDetailFooterCell.xib(is deprecated in Aftee)
│ │ │ │ │ ├── HistoryDetailSectionHeaderCell.swift(is deprecated in Aftee)
│ │ │ │ │ ├── HistoryDetailSectionHeaderCell.xib(is deprecated in Aftee)
│ │ │ │ │ ├── HistoryDetailTableViewCell.swift
│ │ │ │ │ └── HistoryDetailTableViewCell.xib
│ │ │ │ ├── HistoryDetailView.swift
│ │ │ │ ├── HistoryDetailViewController.swift
│ │ │ │ ├── HistoryDetailViewController.xib
│ │ │ │ └── Model
│ │ │ │ └── TransactionsModel.swift
│ │ │ ├── HistoryViewController.swift
│ │ │ ├── HistoryViewController.xib
│ │ │ ├── Model
│ │ │ │ ├── MePendingsModel.swift
│ │ │ │ └── MebillingsModel.swift
│ │ │ └── Receipt(is deprecated in Aftee)
│ │ │ ├── ATNHistoryReceiptViewController.xib
│ │ │ ├── HistoryReceiptViewController.swift
│ │ │ └── HistoryReceiptViewController.xib
│ │ ├── Menu
│ │ │ ├── CommonView
│ │ │ │ ├── Input
│ │ │ │ │ ├── MenuInputTextView.swift
│ │ │ │ │ ├── MenuSwitchView.swift
│ │ │ │ │ ├── PasscodeSwitchView.swift
│ │ │ │ │ └── TouchIDSwitchView.swift
│ │ │ │ └── Show
│ │ │ │ ├── MenuShowAddressView.swift
│ │ │ │ ├── MenuShowTextView.swift
│ │ │ │ └── MenuShowTitleView.swift
│ │ │ ├── MailNotification
│ │ │ │ ├── ATNMailNotificationViewController.xib
│ │ │ │ ├── MailNotificationViewController.swift
│ │ │ │ └── MailNotificationViewController.xib
│ │ │ ├── MemberInformation
│ │ │ │ ├── ATNMemberInformationViewController.xib
│ │ │ │ ├── Birth
│ │ │ │ │ ├── ChangeBirthViewController.swift
│ │ │ │ │ └── ChangeBirthViewController.xib
│ │ │ │ ├── DeliveryAddress
│ │ │ │ │ ├── ATNDeliveryAddressViewController.xib
│ │ │ │ │ ├── DeliveryAddressViewController.swift
│ │ │ │ │ ├── DeliveryAddressViewController.xib
│ │ │ │ │ ├── InputView(is deprecated in Aftee)
│ │ │ │ │ │ ├── InputPostCodeView.swift
│ │ │ │ │ │ └── SelectPrefectureView.swift
│ │ │ │ │ └── PickerView
│ │ │ │ │ └── DeliveryAddressPickerView.swift
│ │ │ │ ├── Gender
│ │ │ │ │ ├── ChangeGenderViewController.swift
│ │ │ │ │ └── ChangeGenderViewController.xib
│ │ │ │ ├── MailAddress
│ │ │ │ │ ├── ATNMailAddressViewController.xib
│ │ │ │ │ ├── MailAddressViewController.swift
│ │ │ │ │ └── MailAddressViewController.xib
│ │ │ │ ├── MemberInformationViewController.swift
│ │ │ │ ├── MemberInformationViewController.xib
│ │ │ │ ├── Name
│ │ │ │ │ ├── ATNNameViewController.xib
│ │ │ │ │ ├── NameViewController.swift
│ │ │ │ │ └── NameViewController.xib
│ │ │ │ └── Phone
│ │ │ │ ├── ChangePhoneNumberViewController.swift
│ │ │ │ └── ChangePhoneNumberViewController.xib
│ │ │ ├── Passcode
│ │ │ │ ├── ATNChangePasscodeViewController.xib
│ │ │ │ ├── ChangePasscodeViewController.swift
│ │ │ │ ├── ChangePasscodeViewController.xib
│ │ │ │ ├── SettingPasscodeViewController.swift
│ │ │ │ └── View
│ │ │ │ └── ChangePasscodeInputView.swift
│ │ │ ├── Password
│ │ │ │ ├── ATNPasswordViewController.xib
│ │ │ │ ├── PasswordViewController.swift
│ │ │ │ └── PasswordViewController.xib
│ │ │ ├── PrivacySetting
│ │ │ │ ├── PrivacySettingViewController.swift
│ │ │ │ └── PrivacySettingViewController.xib
│ │ │ ├── PushNotification
│ │ │ │ ├── ATNPushNotificationViewController.xib
│ │ │ │ ├── PushNotificationViewController.swift
│ │ │ │ └── PushNotificationViewController.xib
│ │ │ └── UsePoint
│ │ │ ├── UsePointViewController.swift
│ │ │ └── UsePointViewController.xib
│ │ ├── Summary
│ │ │ ├── ATNSummaryViewController.xib
│ │ │ ├── SummaryViewController.swift
│ │ │ ├── SummaryViewController.xib
│ │ │ └── View
│ │ │ ├── FirstSummaryView.swift (is deprecated in Aftee)
│ │ │ ├── SummaryAmountView.swift
│ │ │ └── SummaryGraphView.swift
│ │ └── payment
│ │ ├── ATMOrderInfoViewController.swift
│ │ ├── ATMOrderInfoViewController.xib
│ │ ├── BarCode
│ │ │ └── BarCode.swift
│ │ ├── Cell
│ │ │ ├── PaymentCollectionViewCell.swift
│ │ │ ├── PaymentCollectionViewCell.xib
│ │ │ ├── PaymentTableViewCell.swift
│ │ │ └── PaymentTableViewCell.xib
│ │ ├── ChooseATMViewController.swift
│ │ ├── ChooseATMViewController.xib
│ │ ├── ChooseSupermarketViewController.swift
│ │ ├── ChooseSupermarketViewController.xib
│ │ ├── Model
│ │ │ └── InvoiceModel.swift
│ │ ├── PaymentViewController.swift
│ │ ├── PaymentViewController.xib
│ │ ├── QROrderInfoViewController.swift
│ │ ├── QROrderInfoViewController.xib
│ │ ├── SupermarketOrderInfoViewController.swift
│ │ ├── SupermarketOrderInfoViewController.xib
│ │ └── View
│ │ ├── ChooseATMTableViewCell.swift
│ │ ├── ChooseATMTableViewCell.xib
│ │ ├── ChooseSupermarketTableViewCell.swift
│ │ └── ChooseSupermarketTableViewCell.xib
│ └── BeforeLogin
│ ├── Introduction(is deprecated in Aftee)
│ │ ├── ATNIntroductionViewController.xib
│ │ ├── IntroductionViewController.swift
│ │ ├── IntroductionViewController.xib
│ │ └── View
│ │ ├── Introduction01
│ │ │ └── Introduction01View.swift
│ │ ├── Introduction02
│ │ │ └── Introduction02View.swift
│ │ ├── Introduction03
│ │ │ └── Introduction03View.swift
│ │ ├── Introduction04
│ │ │ └── Introduction04View.swift
│ │ ├── Introduction05
│ │ │ └── Introduction05View.swift
│ │ └── Introduction06
│ │ └── Introduction06View.swift
│ ├── Login
│ │ ├── ATNLoginViewController.xib
│ │ ├── LoginViewController.swift
│ │ └── LoginViewController.xib
│ ├── Passcode
│ │ ├── ATNPasscodeViewController.xib
│ │ ├── PasscodeViewController.swift
│ │ ├── PasscodeViewController.xib
│ │ └── View
│ │ └── PasscodeInputView.swift
│ ├── Register
│ │ ├── FacebookLoginViewController.swift
│ │ ├── FacebookLoginViewController.xib
│ │ ├── InputUserInfoViewController.swift
│ │ ├── InputUserInfoViewController.xib
│ │ ├── PhoneInputViewController.swift
│ │ ├── PhoneInputViewController.xib
│ │ ├── VerificationCodeInputViewController.swift
│ │ └── VerificationCodeInputViewController.xib
│ └── Start
│ ├── ATNStartViewController.xib
│ ├── StartViewController.swift
│ ├── StartViewController.xib
│ └── View
│ └── StartCoverView.swift
├── CommonComponent
│ ├── Button
│ │ └── GenericButton.swift
│ └── UIView
│ └── ImageView
│ └── AsyncImageView.swift
├── CommonModule
│ └── MenuView
│ ├── Cell
│ │ └── MenuTableViewCell.swift
│ ├── MenuView.swift
│ └── View
│ ├── MenuFooterView.swift
│ ├── MenuHeaderView.swift
│ └── MenuSectionHeaderView.swift
└── PopUp
└── CustomAlert
├── CustomAlertView.swift
├── CustomConfirmAlertView.swift
└── Step005 (is deprecated in Aftee)
└── Step005View.swift

90 directories, 219 files

推送

项目关于推送模块从之前的 GCM 换成了 FCM,GoogleTagManager 也就升级为了 7.0
关于 FCM 的配置,plist 文件在 Supporting Files 里面。在 setupThirdParty 里面对 FCM 进行了注册。
当收到推送消息过后,都统一在 NotificationManager 进行了处理,进行跳转等操作。

交易

交易历史数据部分:数据是客户端在拿到了数据过后手动进行了分层、排序(拿到字典的key进行了排序,没有使用sorted(by: <#T##((key: Int, value: [String]), (key: Int, value: [String])) throws -> Bool#> 直接对字典进行排序))处理。
交易历史显示部分:同时创建了一个 tableView 和一个 CollectionView,根据需要选择显示哪个 View。
交易历史 Click:点击的时候是 modal 出来一个带导航控制器的 Controller,这里的做法是和通知模块保持了一致。
交易详细:详细部分用了一个 TableView 来展示,对于头部和底部在需要的时候更改了一下约束,达到展示的效果。

支付

支付数据部分:支付部分请求的数据和交易历史部分 Billing 是一样的,只是多了一层筛选。
支付展示部分:同时创建了一个 tableView 和一个 CollectionView,根据需要选择显示哪个 View。
支付item Click:当点击的时候重新计算价格,并对价格进行格式化处理然后展示。
进行支付 Click:Alert 出来选择器,供用户选择,然后将参数进行传递。

摘要

摘要模块数据是直接在本地读取,每次进入界面的时候就重新刷新数据,重绘界面。
当可用余额低于 10000 的时候就不显示 “可用餘額”

支付场景选择

在点击过后就会做网络请求,这时候为了防止用户连续做多次请求,就设置了一个 Bool 值来判断是否正在请求当中。

订单详情

条形码是手动生成,界面是使用了 ScrollView,需要手动去计算一次 ContentSize

個人基本資訊

部分界面使用的是纯代码布局,对于部分方法使用了默认参数,在使用的时候注意默认参数。

配置说明

GoogleService-Info-jd.plistjp.co.netprotections.atone-app-dev-3 push 使用
GoogleService-Info-DEV.plisttw.netprotections.aftee-app-dev-3 push 使用
GoogleService-Info-RELEASE.plisttw.netprotections.aftee-app push 使用
1670315606384431 FacebookAppID
jp.co.netprotections.atone-app-dev-3 老版本Dev模式 Bundle ID
tw.netprotections.aftee-app-dev-3 DEV模式 Bundle ID
tw.netprotections.aftee-app RELEASE模式 Bundle ID

项目注意点

  • API 请求的时候需要配置认证信息,配置在 HTTPRequestOperationManager 中。部分接口的认证不同需单独配置调用 setMockAuthorizationHeader 方法。
  • ReproAnalyticsFabric 均保持了上个版本的原貌,未做任何变动。

可能遗留的问题

設定推播通知:如果启用 Repro 的时候可能会出现上传信息不正确。
AnalyticsFabric 可能需要重新配置,目前是和安卓保持一致没有动以前的代码以及配置信息。

项目目前情况

  • Version:1.0.2
  • Build:1.0.3
  • 在 8月7号的时候已经上传了版本到 itunesconnect , 在 8月9号已经给客户发了一个 STG 的包。
  • 在 8月9号 发现 設定推播通知type 未作出对应,做了相应的更改反馈给客户。
  • 客户所给账号:
     id :myuan@netprotections.co.jp
     pass :Netprotections123
    

式样资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容