diff --git a/Yep.xcodeproj/project.pbxproj b/Yep.xcodeproj/project.pbxproj index 0ec9fd28..98c97f86 100644 --- a/Yep.xcodeproj/project.pbxproj +++ b/Yep.xcodeproj/project.pbxproj @@ -7,7 +7,6 @@ objects = { /* Begin PBXBuildFile section */ - 0A6443C91AC44B5800DC818D /* YepMessageService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A6443C81AC44B5800DC818D /* YepMessageService.swift */; }; 0A8F54B11AB67D11004AD60E /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0A8F54B01AB67D11004AD60E /* AppDelegate.swift */; }; 0A8F54B61AB67D11004AD60E /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0A8F54B41AB67D11004AD60E /* Main.storyboard */; }; 0A8F54B81AB67D11004AD60E /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0A8F54B71AB67D11004AD60E /* Images.xcassets */; }; @@ -65,6 +64,7 @@ 5033159D1AC101C80008A209 /* ChatRightTextCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5033159B1AC101C80008A209 /* ChatRightTextCell.xib */; }; 503315A01AC126100008A209 /* MessageToolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5033159F1AC126100008A209 /* MessageToolbar.swift */; }; 503CAB431AC00CB100DFE830 /* ConversationViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 503CAB421AC00CB100DFE830 /* ConversationViewController.swift */; }; + 5076C56A1AC46B9F00B22952 /* FayeService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5076C5691AC46B9F00B22952 /* FayeService.swift */; }; 5099B9C41AB9510D002F940B /* RankView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5099B9C31AB9510D002F940B /* RankView.swift */; }; 5099B9C71AB99F7B002F940B /* RegisterPickAvatarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5099B9C61AB99F7B002F940B /* RegisterPickAvatarViewController.swift */; }; 5099B9C91AB9A7CB002F940B /* CameraPreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5099B9C81AB9A7CB002F940B /* CameraPreviewView.swift */; }; @@ -86,7 +86,6 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0A6443C81AC44B5800DC818D /* YepMessageService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = YepMessageService.swift; path = Services/YepMessageService.swift; sourceTree = ""; }; 0A8F54AB1AB67D11004AD60E /* Yep.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Yep.app; sourceTree = BUILT_PRODUCTS_DIR; }; 0A8F54AF1AB67D11004AD60E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 0A8F54B01AB67D11004AD60E /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; @@ -152,6 +151,7 @@ 5033159B1AC101C80008A209 /* ChatRightTextCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = ChatRightTextCell.xib; path = Views/Cells/ChatRightText/ChatRightTextCell.xib; sourceTree = ""; }; 5033159F1AC126100008A209 /* MessageToolbar.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = MessageToolbar.swift; path = Views/MessageToolbar/MessageToolbar.swift; sourceTree = ""; }; 503CAB421AC00CB100DFE830 /* ConversationViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ConversationViewController.swift; path = ViewControllers/Conversation/ConversationViewController.swift; sourceTree = ""; }; + 5076C5691AC46B9F00B22952 /* FayeService.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = FayeService.swift; path = Services/FayeService.swift; sourceTree = ""; }; 5099B9C31AB9510D002F940B /* RankView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RankView.swift; path = Views/Rank/RankView.swift; sourceTree = ""; }; 5099B9C61AB99F7B002F940B /* RegisterPickAvatarViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RegisterPickAvatarViewController.swift; path = ViewControllers/Register/RegisterPickAvatarViewController.swift; sourceTree = ""; }; 5099B9C81AB9A7CB002F940B /* CameraPreviewView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = CameraPreviewView.swift; path = Views/CameraPreview/CameraPreviewView.swift; sourceTree = ""; }; @@ -408,7 +408,7 @@ 502AE5261AB72D06005BD199 /* YepNetworking.swift */, 502AE5281AB81076005BD199 /* YepService.swift */, 50E114F81ABC137A00F13000 /* YepServiceSync.swift */, - 0A6443C81AC44B5800DC818D /* YepMessageService.swift */, + 5076C5691AC46B9F00B22952 /* FayeService.swift */, ); name = Services; sourceTree = ""; @@ -783,7 +783,6 @@ 502AE53D1AB87C0D005BD199 /* YepUserDefaults.swift in Sources */, 502AE51B1AB70DDB005BD199 /* WelcomeViewController.swift in Sources */, 50E114F41ABBF9CC00F13000 /* Models.swift in Sources */, - 0A6443C91AC44B5800DC818D /* YepMessageService.swift in Sources */, 50165C451AC2860900C7AEBE /* ConversationLayout.swift in Sources */, 50E114FC1ABC549300F13000 /* ContactsCell.swift in Sources */, 5023DE591AB6DBC100B3EE96 /* UIImage+Yep.swift in Sources */, @@ -796,6 +795,7 @@ 50E114F71ABBFA7000F13000 /* RLMSupport.swift in Sources */, 5023DE261AB6856300B3EE96 /* ConversationsViewController.swift in Sources */, 502AE5271AB72D06005BD199 /* YepNetworking.swift in Sources */, + 5076C56A1AC46B9F00B22952 /* FayeService.swift in Sources */, 5099B9C71AB99F7B002F940B /* RegisterPickAvatarViewController.swift in Sources */, 502AE5291AB81076005BD199 /* YepService.swift in Sources */, 502AE51E1AB712D2005BD199 /* RegisterPickNameViewController.swift in Sources */, diff --git a/Yep/AppDelegate.swift b/Yep/AppDelegate.swift index 08cd150c..fc61d3d8 100644 --- a/Yep/AppDelegate.swift +++ b/Yep/AppDelegate.swift @@ -49,7 +49,8 @@ class AppDelegate: UIResponder, UIApplicationDelegate { if let token = YepUserDefaults.v1AccessToken() { sync() - YepMessageService.sharedManager + + startFaye() } return true @@ -137,12 +138,13 @@ class AppDelegate: UIResponder, UIApplicationDelegate { } } } - - - // TODO: 刷新 UI,特别是对于首次登陆来说 } + func startFaye() { + FayeService.sharedManager.startConnect() + } + func registerThirdPartyPushWithDeciveToken(deviceToken: NSData, pusherID: String) { APService.registerDeviceToken(deviceToken) APService.setTags(Set(["iOS"]), alias: pusherID, callbackSelector: "", object: nil) diff --git a/Yep/Helpers/YepUserDefaults.swift b/Yep/Helpers/YepUserDefaults.swift index bfbf8fcb..5c8913fe 100644 --- a/Yep/Helpers/YepUserDefaults.swift +++ b/Yep/Helpers/YepUserDefaults.swift @@ -27,9 +27,12 @@ class YepUserDefaults { let defaults = NSUserDefaults.standardUserDefaults() defaults.setObject(accessToken, forKey: v1AccessTokenKey) - // 同步数据的好时机 if let appDelegate = UIApplication.sharedApplication().delegate as? AppDelegate { + // 注册或初次登录时同步数据的好时机 appDelegate.sync() + + // 也是注册或初次登录时启动 Faye 的好时机 + appDelegate.startFaye() } } diff --git a/Yep/Services/YepMessageService.swift b/Yep/Services/FayeService.swift similarity index 60% rename from Yep/Services/YepMessageService.swift rename to Yep/Services/FayeService.swift index 590d84f3..16968372 100644 --- a/Yep/Services/YepMessageService.swift +++ b/Yep/Services/FayeService.swift @@ -9,16 +9,12 @@ import UIKit import MZFayeClient -private let sharedYepMessageService = YepMessageService() +class FayeService: NSObject, MZFayeClientDelegate { + + static let sharedManager = FayeService() + + let client: MZFayeClient -class YepMessageService: NSObject, MZFayeClientDelegate{ - - let client:MZFayeClient! - - class var sharedManager : YepMessageService { - return sharedYepMessageService - } - override init() { client = MZFayeClient(URL:NSURL(string: "http://faye-proxy-1245945049.cn-north-1.elb.amazonaws.com.cn/faye")) @@ -26,25 +22,41 @@ class YepMessageService: NSObject, MZFayeClientDelegate{ super.init() client.delegate = self - - if let v1AccessToken = YepUserDefaults.v1AccessToken() { - var extensionData = [ - "access_token": v1AccessToken, - "mobile": "18620855007", - "phone_code": "86" - ] - - let userID = YepUserDefaults.userID()! - let personalChannel = "/users/\(userID)/messages" - println("Will Subscribe \(personalChannel)") - client.setExtension(extensionData, forChannel: personalChannel) - client.subscribeToChannel(personalChannel) - - client.connect() - } - - } + + // MARK: Public + + func startConnect() { + if + let v1AccessToken = YepUserDefaults.v1AccessToken(), + let userID = YepUserDefaults.userID() { + let extensionData = [ + "access_token": v1AccessToken, + "mobile": "18620855007", + "phone_code": "86" + ] + + let personalChannel = personalChannelWithUserID(userID) + + println("Will Subscribe \(personalChannel)") + + client.setExtension(extensionData, forChannel: personalChannel) + client.subscribeToChannel(personalChannel) + + client.connect() + + } else { + println("FayeClient start failed!!!!") + } + } + + // MARK: Private + + private func personalChannelWithUserID(userID: String) -> String { + return "/users/\(userID)/messages" + } + + // MARK: MZFayeClientDelegate func fayeClient(client: MZFayeClient!, didConnectToURL url: NSURL!) { println("fayeClient didConnectToURL \(url)")