pr/481 Swift SDK ActivityFeed sample. This closes #481 https://issues.apache.org/jira/browse/USERGRID-1257
Project: http://git-wip-us.apache.org/repos/asf/usergrid/repo Commit: http://git-wip-us.apache.org/repos/asf/usergrid/commit/60d60fed Tree: http://git-wip-us.apache.org/repos/asf/usergrid/tree/60d60fed Diff: http://git-wip-us.apache.org/repos/asf/usergrid/diff/60d60fed Branch: refs/heads/master Commit: 60d60fed1bae24516f3b0e7c6f2ed74680c7a88e Parents: 7c9564b Author: Dave Johnson <snoopd...@apache.org> Authored: Tue Feb 16 08:14:18 2016 -0500 Committer: Dave Johnson <snoopd...@apache.org> Committed: Tue Feb 16 08:14:18 2016 -0500 ---------------------------------------------------------------------- .../ActivityFeed.xcodeproj/project.pbxproj | 827 +++++++++++++++++++ .../contents.xcworkspacedata | 7 + .../contents.xcworkspacedata | 7 + .../xcshareddata/ActivityFeed.xcscmblueprint | 30 + sdks/swift/Samples/ActivityFeed/Podfile | 8 + sdks/swift/Samples/ActivityFeed/Readme.md | 29 + .../ActivityFeed/Source/ActivityEntity.swift | 60 ++ .../ActivityFeed/Source/AppDelegate.swift | 65 ++ .../AppIcon.appiconset/Contents.json | 38 + .../Source/Assets.xcassets/Contents.json | 6 + .../UsergridGuy.imageset/Contents.json | 21 + .../UsergridGuy.imageset/UsergridGuy.png | Bin 0 -> 6230 bytes .../Source/Base.lproj/LaunchScreen.storyboard | 27 + .../Source/Base.lproj/Main.storyboard | 371 +++++++++ .../Source/FollowViewController.swift | 50 ++ .../ActivityFeed/Source/FormTextField.swift | 71 ++ .../Samples/ActivityFeed/Source/Info.plist | 43 + .../Source/LoginViewController.swift | 77 ++ .../Source/MessageTableViewCell.swift | 101 +++ .../ActivityFeed/Source/MessageTextView.swift | 39 + .../Source/MessageViewController.swift | 224 +++++ .../Source/RegisterViewController.swift | 62 ++ .../ActivityFeed/Source/UsergridManager.swift | 78 ++ .../Source/ViewControllerExtensions.swift | 36 + .../Assets.xcassets/README__ignoredByTemplate__ | 1 + .../ExtensionDelegate.swift | 45 + .../WatchSample Extension/Info.plist | 45 + .../InterfaceController.swift | 81 ++ .../AppIcon.appiconset/Contents.json | 55 ++ .../WatchSample/Base.lproj/Interface.storyboard | 46 ++ .../Samples/ActivityFeed/WatchSample/Info.plist | 35 + sdks/swift/Samples/Readme.md | 27 + 32 files changed, 2612 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcodeproj/project.pbxproj ---------------------------------------------------------------------- diff --git a/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcodeproj/project.pbxproj b/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcodeproj/project.pbxproj new file mode 100644 index 0000000..215ca87 --- /dev/null +++ b/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcodeproj/project.pbxproj @@ -0,0 +1,827 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 634855401C726AE9005FE016 /* UsergridSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 634855331C726AD3005FE016 /* UsergridSDK.framework */; }; + 634855411C726AE9005FE016 /* UsergridSDK.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 634855331C726AD3005FE016 /* UsergridSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 634855451C726AF7005FE016 /* UsergridSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 634855351C726AD3005FE016 /* UsergridSDK.framework */; }; + 634855461C726AF7005FE016 /* UsergridSDK.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 634855351C726AD3005FE016 /* UsergridSDK.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 6348D95F1C4EAC0B005C978C /* Interface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6348D95D1C4EAC0B005C978C /* Interface.storyboard */; }; + 6348D9611C4EAC0B005C978C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6348D9601C4EAC0B005C978C /* Assets.xcassets */; }; + 6348D9681C4EAC0B005C978C /* WatchSample Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 6348D9671C4EAC0B005C978C /* WatchSample Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + 6348D96D1C4EAC0B005C978C /* InterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6348D96C1C4EAC0B005C978C /* InterfaceController.swift */; }; + 6348D96F1C4EAC0B005C978C /* ExtensionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6348D96E1C4EAC0B005C978C /* ExtensionDelegate.swift */; }; + 6348D9711C4EAC0C005C978C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6348D9701C4EAC0C005C978C /* Assets.xcassets */; }; + 6348D9751C4EAC0C005C978C /* WatchSample.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = 6348D95B1C4EAC0B005C978C /* WatchSample.app */; }; + 6348D9861C4EC1FD005C978C /* UsergridManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6348D9851C4EC1FD005C978C /* UsergridManager.swift */; }; + 6348D9871C4EC1FD005C978C /* UsergridManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6348D9851C4EC1FD005C978C /* UsergridManager.swift */; }; + 6355FEC51BFE4FC600E07170 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6355FEC41BFE4FC600E07170 /* AppDelegate.swift */; }; + 6355FEC71BFE4FC600E07170 /* ViewControllerExtensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6355FEC61BFE4FC600E07170 /* ViewControllerExtensions.swift */; }; + 6355FECA1BFE4FC600E07170 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6355FEC81BFE4FC600E07170 /* Main.storyboard */; }; + 6355FECC1BFE4FC600E07170 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 6355FECB1BFE4FC600E07170 /* Assets.xcassets */; }; + 6355FECF1BFE4FC600E07170 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 6355FECD1BFE4FC600E07170 /* LaunchScreen.storyboard */; }; + 63C9E52A1C04F3B900C65F81 /* MessageTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63C9E5291C04F3B900C65F81 /* MessageTableViewCell.swift */; }; + 63C9E5311C05184900C65F81 /* MessageTextView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63C9E5301C05184900C65F81 /* MessageTextView.swift */; }; + 63CD143D1C505EC500C00076 /* ActivityEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63CD143C1C505EC500C00076 /* ActivityEntity.swift */; }; + 63CD143E1C505EC500C00076 /* ActivityEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63CD143C1C505EC500C00076 /* ActivityEntity.swift */; }; + 63E7DD741C518BAD00D84B12 /* LoginViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63E7DD731C518BAD00D84B12 /* LoginViewController.swift */; }; + 63E7DD761C518C9000D84B12 /* RegisterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63E7DD751C518C9000D84B12 /* RegisterViewController.swift */; }; + 63E7DD781C518E0400D84B12 /* MessageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63E7DD771C518E0400D84B12 /* MessageViewController.swift */; }; + 63E7DD7A1C518F1700D84B12 /* FollowViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63E7DD791C518F1700D84B12 /* FollowViewController.swift */; }; + 63E7DD7E1C518FDD00D84B12 /* FormTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63E7DD7D1C518FDD00D84B12 /* FormTextField.swift */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 634855321C726AD3005FE016 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 63AF0E881BBC38FB009D4196; + remoteInfo = "UsergridSDK iOS"; + }; + 634855341C726AD3005FE016 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 639B4BEB1C3DD6CF005E26E7; + remoteInfo = "UsergridSDK watchOS"; + }; + 634855361C726AD3005FE016 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 63EE610B1C406E1600AFC2CF; + remoteInfo = "UsergridSDK tvOS"; + }; + 634855381C726AD3005FE016 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 631920451C48436500F99E86; + remoteInfo = "UsergridSDK OSX"; + }; + 6348553A1C726AD3005FE016 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 6319204B1C49BC0700F99E86; + remoteInfo = UsergridSDK_TVOS_Tests; + }; + 6348553C1C726AD3005FE016 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 630A219F1C49BFFC008BE87F; + remoteInfo = UsergridSDK_OSX_Tests; + }; + 6348553E1C726AD3005FE016 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = 630A21B81C49C473008BE87F; + remoteInfo = UsergridSDK_iOS_Tests; + }; + 634855421C726AE9005FE016 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 63AF0E871BBC38FB009D4196; + remoteInfo = "UsergridSDK iOS"; + }; + 634855471C726AF7005FE016 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */; + proxyType = 1; + remoteGlobalIDString = 639B4BEA1C3DD6CF005E26E7; + remoteInfo = "UsergridSDK watchOS"; + }; + 6348D9691C4EAC0B005C978C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6355FEB91BFE4FC600E07170 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6348D9661C4EAC0B005C978C; + remoteInfo = "WatchSample Extension"; + }; + 6348D9731C4EAC0C005C978C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 6355FEB91BFE4FC600E07170 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6348D95A1C4EAC0B005C978C; + remoteInfo = WatchSample; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 634855441C726AE9005FE016 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 634855411C726AE9005FE016 /* UsergridSDK.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + 634855491C726AF8005FE016 /* Embed Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 634855461C726AF7005FE016 /* UsergridSDK.framework in Embed Frameworks */, + ); + name = "Embed Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; + 6348D97B1C4EAC0C005C978C /* Embed App Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + 6348D9681C4EAC0B005C978C /* WatchSample Extension.appex in Embed App Extensions */, + ); + name = "Embed App Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; + 6348D97D1C4EAC0C005C978C /* Embed Watch Content */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = "$(CONTENTS_FOLDER_PATH)/Watch"; + dstSubfolderSpec = 16; + files = ( + 6348D9751C4EAC0C005C978C /* WatchSample.app in Embed Watch Content */, + ); + name = "Embed Watch Content"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = UsergridSDK.xcodeproj; path = ../../UsergridSDK.xcodeproj; sourceTree = "<group>"; }; + 6348D95B1C4EAC0B005C978C /* WatchSample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WatchSample.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 6348D95E1C4EAC0B005C978C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Interface.storyboard; sourceTree = "<group>"; }; + 6348D9601C4EAC0B005C978C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; + 6348D9621C4EAC0B005C978C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; + 6348D9671C4EAC0B005C978C /* WatchSample Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "WatchSample Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; + 6348D96C1C4EAC0B005C978C /* InterfaceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InterfaceController.swift; sourceTree = "<group>"; }; + 6348D96E1C4EAC0B005C978C /* ExtensionDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionDelegate.swift; sourceTree = "<group>"; }; + 6348D9701C4EAC0C005C978C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; + 6348D9721C4EAC0C005C978C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; + 6348D9851C4EC1FD005C978C /* UsergridManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UsergridManager.swift; sourceTree = "<group>"; }; + 6355FEC11BFE4FC600E07170 /* ActivityFeed.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ActivityFeed.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 6355FEC41BFE4FC600E07170 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; }; + 6355FEC61BFE4FC600E07170 /* ViewControllerExtensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewControllerExtensions.swift; sourceTree = "<group>"; }; + 6355FEC91BFE4FC600E07170 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; + 6355FECB1BFE4FC600E07170 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; }; + 6355FECE1BFE4FC600E07170 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; + 6355FED01BFE4FC600E07170 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; }; + 63C9E5291C04F3B900C65F81 /* MessageTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageTableViewCell.swift; sourceTree = "<group>"; }; + 63C9E5301C05184900C65F81 /* MessageTextView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageTextView.swift; sourceTree = "<group>"; }; + 63CD143C1C505EC500C00076 /* ActivityEntity.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ActivityEntity.swift; sourceTree = "<group>"; }; + 63E7DD731C518BAD00D84B12 /* LoginViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoginViewController.swift; sourceTree = "<group>"; }; + 63E7DD751C518C9000D84B12 /* RegisterViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RegisterViewController.swift; sourceTree = "<group>"; }; + 63E7DD771C518E0400D84B12 /* MessageViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MessageViewController.swift; sourceTree = "<group>"; }; + 63E7DD791C518F1700D84B12 /* FollowViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FollowViewController.swift; sourceTree = "<group>"; }; + 63E7DD7D1C518FDD00D84B12 /* FormTextField.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FormTextField.swift; sourceTree = "<group>"; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 6348D9641C4EAC0B005C978C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 634855451C726AF7005FE016 /* UsergridSDK.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6355FEBE1BFE4FC600E07170 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 634855401C726AE9005FE016 /* UsergridSDK.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 634855291C726AD3005FE016 /* Products */ = { + isa = PBXGroup; + children = ( + 634855331C726AD3005FE016 /* UsergridSDK.framework */, + 634855351C726AD3005FE016 /* UsergridSDK.framework */, + 634855371C726AD3005FE016 /* UsergridSDK.framework */, + 634855391C726AD3005FE016 /* UsergridSDK.framework */, + 6348553B1C726AD3005FE016 /* UsergridSDK_TVOS_Tests.xctest */, + 6348553D1C726AD3005FE016 /* UsergridSDK_OSX_Tests.xctest */, + 6348553F1C726AD3005FE016 /* UsergridSDK_iOS_Tests.xctest */, + ); + name = Products; + sourceTree = "<group>"; + }; + 6348D95C1C4EAC0B005C978C /* WatchSample */ = { + isa = PBXGroup; + children = ( + 6348D95D1C4EAC0B005C978C /* Interface.storyboard */, + 6348D9601C4EAC0B005C978C /* Assets.xcassets */, + 6348D9621C4EAC0B005C978C /* Info.plist */, + ); + path = WatchSample; + sourceTree = "<group>"; + }; + 6348D96B1C4EAC0B005C978C /* WatchSample Extension */ = { + isa = PBXGroup; + children = ( + 6348D96C1C4EAC0B005C978C /* InterfaceController.swift */, + 6348D96E1C4EAC0B005C978C /* ExtensionDelegate.swift */, + 6348D9701C4EAC0C005C978C /* Assets.xcassets */, + 6348D9721C4EAC0C005C978C /* Info.plist */, + ); + path = "WatchSample Extension"; + sourceTree = "<group>"; + }; + 6355FEB81BFE4FC600E07170 = { + isa = PBXGroup; + children = ( + 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */, + 6355FEC31BFE4FC600E07170 /* Source */, + 6348D95C1C4EAC0B005C978C /* WatchSample */, + 6348D96B1C4EAC0B005C978C /* WatchSample Extension */, + 6355FEC21BFE4FC600E07170 /* Products */, + ); + sourceTree = "<group>"; + }; + 6355FEC21BFE4FC600E07170 /* Products */ = { + isa = PBXGroup; + children = ( + 6355FEC11BFE4FC600E07170 /* ActivityFeed.app */, + 6348D95B1C4EAC0B005C978C /* WatchSample.app */, + 6348D9671C4EAC0B005C978C /* WatchSample Extension.appex */, + ); + name = Products; + sourceTree = "<group>"; + }; + 6355FEC31BFE4FC600E07170 /* Source */ = { + isa = PBXGroup; + children = ( + 6355FEC41BFE4FC600E07170 /* AppDelegate.swift */, + 6348D9851C4EC1FD005C978C /* UsergridManager.swift */, + 63CD143C1C505EC500C00076 /* ActivityEntity.swift */, + 63E7DD7B1C518F9600D84B12 /* View Controllers */, + 63E7DD7C1C518FC300D84B12 /* Custom Views */, + 63E7DD801C51903A00D84B12 /* Storyboards */, + 63E7DD7F1C51902F00D84B12 /* Supporting Files */, + ); + path = Source; + sourceTree = "<group>"; + }; + 63E7DD7B1C518F9600D84B12 /* View Controllers */ = { + isa = PBXGroup; + children = ( + 63E7DD791C518F1700D84B12 /* FollowViewController.swift */, + 63E7DD731C518BAD00D84B12 /* LoginViewController.swift */, + 63E7DD771C518E0400D84B12 /* MessageViewController.swift */, + 63E7DD751C518C9000D84B12 /* RegisterViewController.swift */, + 6355FEC61BFE4FC600E07170 /* ViewControllerExtensions.swift */, + ); + name = "View Controllers"; + sourceTree = "<group>"; + }; + 63E7DD7C1C518FC300D84B12 /* Custom Views */ = { + isa = PBXGroup; + children = ( + 63E7DD7D1C518FDD00D84B12 /* FormTextField.swift */, + 63C9E5291C04F3B900C65F81 /* MessageTableViewCell.swift */, + 63C9E5301C05184900C65F81 /* MessageTextView.swift */, + ); + name = "Custom Views"; + sourceTree = "<group>"; + }; + 63E7DD7F1C51902F00D84B12 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + 6355FECB1BFE4FC600E07170 /* Assets.xcassets */, + 6355FED01BFE4FC600E07170 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = "<group>"; + }; + 63E7DD801C51903A00D84B12 /* Storyboards */ = { + isa = PBXGroup; + children = ( + 6355FEC81BFE4FC600E07170 /* Main.storyboard */, + 6355FECD1BFE4FC600E07170 /* LaunchScreen.storyboard */, + ); + name = Storyboards; + sourceTree = "<group>"; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 6348D95A1C4EAC0B005C978C /* WatchSample */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6348D97C1C4EAC0C005C978C /* Build configuration list for PBXNativeTarget "WatchSample" */; + buildPhases = ( + 6348D9591C4EAC0B005C978C /* Resources */, + 6348D97B1C4EAC0C005C978C /* Embed App Extensions */, + ); + buildRules = ( + ); + dependencies = ( + 6348D96A1C4EAC0B005C978C /* PBXTargetDependency */, + ); + name = WatchSample; + productName = WatchSample; + productReference = 6348D95B1C4EAC0B005C978C /* WatchSample.app */; + productType = "com.apple.product-type.application.watchapp2"; + }; + 6348D9661C4EAC0B005C978C /* WatchSample Extension */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6348D97A1C4EAC0C005C978C /* Build configuration list for PBXNativeTarget "WatchSample Extension" */; + buildPhases = ( + 6348D9631C4EAC0B005C978C /* Sources */, + 6348D9641C4EAC0B005C978C /* Frameworks */, + 6348D9651C4EAC0B005C978C /* Resources */, + 634855491C726AF8005FE016 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 634855481C726AF7005FE016 /* PBXTargetDependency */, + ); + name = "WatchSample Extension"; + productName = "WatchSample Extension"; + productReference = 6348D9671C4EAC0B005C978C /* WatchSample Extension.appex */; + productType = "com.apple.product-type.watchkit2-extension"; + }; + 6355FEC01BFE4FC600E07170 /* ActivityFeed */ = { + isa = PBXNativeTarget; + buildConfigurationList = 6355FED31BFE4FC600E07170 /* Build configuration list for PBXNativeTarget "ActivityFeed" */; + buildPhases = ( + 6355FEBD1BFE4FC600E07170 /* Sources */, + 6355FEBE1BFE4FC600E07170 /* Frameworks */, + 6355FEBF1BFE4FC600E07170 /* Resources */, + 6348D97D1C4EAC0C005C978C /* Embed Watch Content */, + 634855441C726AE9005FE016 /* Embed Frameworks */, + ); + buildRules = ( + ); + dependencies = ( + 6348D9741C4EAC0C005C978C /* PBXTargetDependency */, + 634855431C726AE9005FE016 /* PBXTargetDependency */, + ); + name = ActivityFeed; + productName = SDKSample; + productReference = 6355FEC11BFE4FC600E07170 /* ActivityFeed.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 6355FEB91BFE4FC600E07170 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0720; + LastUpgradeCheck = 0710; + ORGANIZATIONNAME = "Apigee Inc."; + TargetAttributes = { + 6348D95A1C4EAC0B005C978C = { + CreatedOnToolsVersion = 7.2; + }; + 6348D9661C4EAC0B005C978C = { + CreatedOnToolsVersion = 7.2; + }; + 6355FEC01BFE4FC600E07170 = { + CreatedOnToolsVersion = 7.1.1; + }; + }; + }; + buildConfigurationList = 6355FEBC1BFE4FC600E07170 /* Build configuration list for PBXProject "ActivityFeed" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = 6355FEB81BFE4FC600E07170; + productRefGroup = 6355FEC21BFE4FC600E07170 /* Products */; + projectDirPath = ""; + projectReferences = ( + { + ProductGroup = 634855291C726AD3005FE016 /* Products */; + ProjectRef = 634855281C726AD3005FE016 /* UsergridSDK.xcodeproj */; + }, + ); + projectRoot = ""; + targets = ( + 6355FEC01BFE4FC600E07170 /* ActivityFeed */, + 6348D95A1C4EAC0B005C978C /* WatchSample */, + 6348D9661C4EAC0B005C978C /* WatchSample Extension */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXReferenceProxy section */ + 634855331C726AD3005FE016 /* UsergridSDK.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = UsergridSDK.framework; + remoteRef = 634855321C726AD3005FE016 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 634855351C726AD3005FE016 /* UsergridSDK.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = UsergridSDK.framework; + remoteRef = 634855341C726AD3005FE016 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 634855371C726AD3005FE016 /* UsergridSDK.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = UsergridSDK.framework; + remoteRef = 634855361C726AD3005FE016 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 634855391C726AD3005FE016 /* UsergridSDK.framework */ = { + isa = PBXReferenceProxy; + fileType = wrapper.framework; + path = UsergridSDK.framework; + remoteRef = 634855381C726AD3005FE016 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6348553B1C726AD3005FE016 /* UsergridSDK_TVOS_Tests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = UsergridSDK_TVOS_Tests.xctest; + remoteRef = 6348553A1C726AD3005FE016 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6348553D1C726AD3005FE016 /* UsergridSDK_OSX_Tests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = UsergridSDK_OSX_Tests.xctest; + remoteRef = 6348553C1C726AD3005FE016 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 6348553F1C726AD3005FE016 /* UsergridSDK_iOS_Tests.xctest */ = { + isa = PBXReferenceProxy; + fileType = wrapper.cfbundle; + path = UsergridSDK_iOS_Tests.xctest; + remoteRef = 6348553E1C726AD3005FE016 /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; +/* End PBXReferenceProxy section */ + +/* Begin PBXResourcesBuildPhase section */ + 6348D9591C4EAC0B005C978C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6348D9611C4EAC0B005C978C /* Assets.xcassets in Resources */, + 6348D95F1C4EAC0B005C978C /* Interface.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6348D9651C4EAC0B005C978C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6348D9711C4EAC0C005C978C /* Assets.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6355FEBF1BFE4FC600E07170 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6355FECF1BFE4FC600E07170 /* LaunchScreen.storyboard in Resources */, + 6355FECC1BFE4FC600E07170 /* Assets.xcassets in Resources */, + 6355FECA1BFE4FC600E07170 /* Main.storyboard in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 6348D9631C4EAC0B005C978C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6348D9871C4EC1FD005C978C /* UsergridManager.swift in Sources */, + 63CD143E1C505EC500C00076 /* ActivityEntity.swift in Sources */, + 6348D96F1C4EAC0B005C978C /* ExtensionDelegate.swift in Sources */, + 6348D96D1C4EAC0B005C978C /* InterfaceController.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 6355FEBD1BFE4FC600E07170 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 63E7DD741C518BAD00D84B12 /* LoginViewController.swift in Sources */, + 63E7DD781C518E0400D84B12 /* MessageViewController.swift in Sources */, + 6348D9861C4EC1FD005C978C /* UsergridManager.swift in Sources */, + 6355FEC71BFE4FC600E07170 /* ViewControllerExtensions.swift in Sources */, + 63E7DD761C518C9000D84B12 /* RegisterViewController.swift in Sources */, + 6355FEC51BFE4FC600E07170 /* AppDelegate.swift in Sources */, + 63E7DD7A1C518F1700D84B12 /* FollowViewController.swift in Sources */, + 63CD143D1C505EC500C00076 /* ActivityEntity.swift in Sources */, + 63C9E5311C05184900C65F81 /* MessageTextView.swift in Sources */, + 63C9E52A1C04F3B900C65F81 /* MessageTableViewCell.swift in Sources */, + 63E7DD7E1C518FDD00D84B12 /* FormTextField.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 634855431C726AE9005FE016 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "UsergridSDK iOS"; + targetProxy = 634855421C726AE9005FE016 /* PBXContainerItemProxy */; + }; + 634855481C726AF7005FE016 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "UsergridSDK watchOS"; + targetProxy = 634855471C726AF7005FE016 /* PBXContainerItemProxy */; + }; + 6348D96A1C4EAC0B005C978C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 6348D9661C4EAC0B005C978C /* WatchSample Extension */; + targetProxy = 6348D9691C4EAC0B005C978C /* PBXContainerItemProxy */; + }; + 6348D9741C4EAC0C005C978C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 6348D95A1C4EAC0B005C978C /* WatchSample */; + targetProxy = 6348D9731C4EAC0C005C978C /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + 6348D95D1C4EAC0B005C978C /* Interface.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 6348D95E1C4EAC0B005C978C /* Base */, + ); + name = Interface.storyboard; + sourceTree = "<group>"; + }; + 6355FEC81BFE4FC600E07170 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 6355FEC91BFE4FC600E07170 /* Base */, + ); + name = Main.storyboard; + sourceTree = "<group>"; + }; + 6355FECD1BFE4FC600E07170 /* LaunchScreen.storyboard */ = { + isa = PBXVariantGroup; + children = ( + 6355FECE1BFE4FC600E07170 /* Base */, + ); + name = LaunchScreen.storyboard; + sourceTree = "<group>"; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + 6348D9761C4EAC0C005C978C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + EMBEDDED_CONTENT_CONTAINS_SWIFT = YES; + IBSC_MODULE = WatchSample_Extension; + INFOPLIST_FILE = WatchSample/Info.plist; + PRODUCT_BUNDLE_IDENTIFIER = com.usergrid.activityfeed.watchkitapp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 2.1; + }; + name = Debug; + }; + 6348D9771C4EAC0C005C978C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + EMBEDDED_CONTENT_CONTAINS_SWIFT = YES; + IBSC_MODULE = WatchSample_Extension; + INFOPLIST_FILE = WatchSample/Info.plist; + PRODUCT_BUNDLE_IDENTIFIER = com.usergrid.activityfeed.watchkitapp; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 2.1; + }; + name = Release; + }; + 6348D9781C4EAC0C005C978C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + EMBEDDED_CONTENT_CONTAINS_SWIFT = YES; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = "WatchSample Extension/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.usergrid.activityfeed.watchkitapp.watchkitextension; + PRODUCT_NAME = "${TARGET_NAME}"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 2.1; + }; + name = Debug; + }; + 6348D9791C4EAC0C005C978C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + EMBEDDED_CONTENT_CONTAINS_SWIFT = YES; + FRAMEWORK_SEARCH_PATHS = "$(inherited)"; + INFOPLIST_FILE = "WatchSample Extension/Info.plist"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.usergrid.activityfeed.watchkitapp.watchkitextension; + PRODUCT_NAME = "${TARGET_NAME}"; + SDKROOT = watchos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 2.1; + }; + name = Release; + }; + 6355FED11BFE4FC600E07170 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.1; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 6355FED21BFE4FC600E07170 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 9.1; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + 6355FED41BFE4FC600E07170 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + EMBEDDED_CONTENT_CONTAINS_SWIFT = YES; + INFOPLIST_FILE = Source/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.usergrid.activityfeed; + PRODUCT_NAME = ActivityFeed; + PROVISIONING_PROFILE = ""; + SWIFT_INSTALL_OBJC_HEADER = NO; + SWIFT_OBJC_BRIDGING_HEADER = ""; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Debug; + }; + 6355FED51BFE4FC600E07170 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + CLANG_ENABLE_MODULES = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + EMBEDDED_CONTENT_CONTAINS_SWIFT = YES; + INFOPLIST_FILE = Source/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.usergrid.activityfeed; + PRODUCT_NAME = ActivityFeed; + PROVISIONING_PROFILE = ""; + SWIFT_INSTALL_OBJC_HEADER = NO; + SWIFT_OBJC_BRIDGING_HEADER = ""; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 6348D97A1C4EAC0C005C978C /* Build configuration list for PBXNativeTarget "WatchSample Extension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6348D9781C4EAC0C005C978C /* Debug */, + 6348D9791C4EAC0C005C978C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6348D97C1C4EAC0C005C978C /* Build configuration list for PBXNativeTarget "WatchSample" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6348D9761C4EAC0C005C978C /* Debug */, + 6348D9771C4EAC0C005C978C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6355FEBC1BFE4FC600E07170 /* Build configuration list for PBXProject "ActivityFeed" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6355FED11BFE4FC600E07170 /* Debug */, + 6355FED21BFE4FC600E07170 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 6355FED31BFE4FC600E07170 /* Build configuration list for PBXNativeTarget "ActivityFeed" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 6355FED41BFE4FC600E07170 /* Debug */, + 6355FED51BFE4FC600E07170 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 6355FEB91BFE4FC600E07170 /* Project object */; +} http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcodeproj/project.xcworkspace/contents.xcworkspacedata ---------------------------------------------------------------------- diff --git a/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..3603482 --- /dev/null +++ b/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Workspace + version = "1.0"> + <FileRef + location = "self:SDKSample.xcodeproj"> + </FileRef> +</Workspace> http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcworkspace/contents.xcworkspacedata ---------------------------------------------------------------------- diff --git a/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcworkspace/contents.xcworkspacedata b/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..1344aa3 --- /dev/null +++ b/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Workspace + version = "1.0"> + <FileRef + location = "group:ActivityFeed.xcodeproj"> + </FileRef> +</Workspace> http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcworkspace/xcshareddata/ActivityFeed.xcscmblueprint ---------------------------------------------------------------------- diff --git a/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcworkspace/xcshareddata/ActivityFeed.xcscmblueprint b/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcworkspace/xcshareddata/ActivityFeed.xcscmblueprint new file mode 100644 index 0000000..cd872fc --- /dev/null +++ b/sdks/swift/Samples/ActivityFeed/ActivityFeed.xcworkspace/xcshareddata/ActivityFeed.xcscmblueprint @@ -0,0 +1,30 @@ +{ + "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "E28DB29D4B8B9FB468FB340D2257B16682332D89", + "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : { + + }, + "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : { + "E28DB29D4B8B9FB468FB340D2257B16682332D89" : 0, + "AD57BFF635DD66DF5DF78257082332592EB51D31" : 0 + }, + "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "F8EC72FE-9B21-4617-8470-0D30DC16A66E", + "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : { + "E28DB29D4B8B9FB468FB340D2257B16682332D89" : "swift\/", + "AD57BFF635DD66DF5DF78257082332592EB51D31" : ".." + }, + "DVTSourceControlWorkspaceBlueprintNameKey" : "ActivityFeed", + "DVTSourceControlWorkspaceBlueprintVersion" : 204, + "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "Samples\/ActivityFeed\/ActivityFeed.xcworkspace", + "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [ + { + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "github.com:RobertWalsh\/usergrid.git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "AD57BFF635DD66DF5DF78257082332592EB51D31" + }, + { + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "github.com:RobertWalsh\/UsergridSDK.git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git", + "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "E28DB29D4B8B9FB468FB340D2257B16682332D89" + } + ] +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/Podfile ---------------------------------------------------------------------- diff --git a/sdks/swift/Samples/ActivityFeed/Podfile b/sdks/swift/Samples/ActivityFeed/Podfile new file mode 100644 index 0000000..23d5db6 --- /dev/null +++ b/sdks/swift/Samples/ActivityFeed/Podfile @@ -0,0 +1,8 @@ +use_frameworks! +inhibit_all_warnings! + +target 'ActivityFeed' do + platform :ios, '9.0' + pod 'SlackTextViewController' +end + http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/Readme.md ---------------------------------------------------------------------- diff --git a/sdks/swift/Samples/ActivityFeed/Readme.md b/sdks/swift/Samples/ActivityFeed/Readme.md new file mode 100644 index 0000000..9fb6555 --- /dev/null +++ b/sdks/swift/Samples/ActivityFeed/Readme.md @@ -0,0 +1,29 @@ +#ActivityFeed + +## Installing dependencies + +The `ActivityFeed` sample app utilizes `Cocoapods` and you will need to run the `$ pod install` command from within the root folder of the sample project in order for the sample to run properly. + +## Running the Sample + +To run the sample app, simply open the `ActivityFeed.xcworkspace` file in Xcode. + +Two targets in Xcode specific to this application will be available: + +- **ActivityFeed Target** + + This will run the iOS sample application. + +- **Watch Sample Target** + + This will run the watchOS companion app. + +##Configuring the Sample Apps + +Before running the sample applications you will need to configure each sample application. + +Each sample application should include a source file named `UsergridManager.swift`. This source file is used to contain interaction with the UsergridSDK within a single source file. In doing so, the interactions within the sample apps can be easily seen and examined. + +Within the `UsergridManager.swift` source there will be at least two different static vars named `ORG_ID` and `APP_ID`. You will need to configure those values in order to run the applications in your environment. + +Applications which utilize push notifications will require a valid provisioning profile and device for the push services to work correctly. http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/Source/ActivityEntity.swift ---------------------------------------------------------------------- diff --git a/sdks/swift/Samples/ActivityFeed/Source/ActivityEntity.swift b/sdks/swift/Samples/ActivityFeed/Source/ActivityEntity.swift new file mode 100644 index 0000000..5ddcf12 --- /dev/null +++ b/sdks/swift/Samples/ActivityFeed/Source/ActivityEntity.swift @@ -0,0 +1,60 @@ +// +// ActivityEntity.swift +// ActivityFeed +// +// Created by Robert Walsh on 1/20/16. +// +/* + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. The ASF licenses this file to You + * under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. For additional information regarding + * copyright in this work, please see the NOTICE file in the top level + * directory of this distribution. + * + */ + +import Foundation +import UsergridSDK + +public class ActivityEntity: UsergridEntity { + + public var actor: [String:AnyObject]? { return self["actor"] as? [String:AnyObject] } + + public var content: String? { return self["content"] as? String } + + public var displayName: String? { return self.actor?["displayName"] as? String } + + public var email: String? { return self.actor?["email"] as? String } + + public var imageInfo: [String:AnyObject]? { return self.actor?["image"] as? [String:AnyObject] } + + public var imageURL: String? { return self.imageInfo?["url"] as? String } + + static func registerSubclass() { + UsergridEntity.mapCustomType("activity", toSubclass: ActivityEntity.self) + } + + required public init(type: String, name: String?, propertyDict: [String : AnyObject]?) { + super.init(type: type, name: name, propertyDict: propertyDict) + } + + required public init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + } + + public override func encodeWithCoder(aCoder: NSCoder) { + super.encodeWithCoder(aCoder) + } + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/Source/AppDelegate.swift ---------------------------------------------------------------------- diff --git a/sdks/swift/Samples/ActivityFeed/Source/AppDelegate.swift b/sdks/swift/Samples/ActivityFeed/Source/AppDelegate.swift new file mode 100644 index 0000000..cca5c41 --- /dev/null +++ b/sdks/swift/Samples/ActivityFeed/Source/AppDelegate.swift @@ -0,0 +1,65 @@ +// +// AppDelegate.swift +// ActivityFeed +// +// Created by Robert Walsh on 11/19/15. +// +/* + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. The ASF licenses this file to You + * under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. For additional information regarding + * copyright in this work, please see the NOTICE file in the top level + * directory of this distribution. + * + */ + + +import UIKit +import UsergridSDK + +// TODO: Change the values to correspond to your organization, application, and notifier identifiers. + +@UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { + + var window: UIWindow? + + func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { + + UINavigationBar.appearance().tintColor = UIColor.whiteColor() + application.registerUserNotificationSettings(UIUserNotificationSettings( forTypes: [.Alert, .Badge, .Sound], categories: nil)) + application.registerForRemoteNotifications() + + // Initialize the Usergrid shared instance. + UsergridManager.initializeSharedInstance() + + // If there is a current user already logged in from the keychain we will skip the login page and go right to the chat screen + + if Usergrid.currentUser != nil { + let rootViewController = self.window!.rootViewController as! UINavigationController + let loginViewController = rootViewController.viewControllers.first! + loginViewController.performSegueWithIdentifier("loginSuccessNonAnimatedSegue", sender: loginViewController) + } + + return true + } + + func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) { + Usergrid.applyPushToken(deviceToken, notifierID: UsergridManager.NOTIFIER_ID, completion: nil) + } + + func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) { + print("Application failed to register for remote notifications") + } +} + http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/AppIcon.appiconset/Contents.json ---------------------------------------------------------------------- diff --git a/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/AppIcon.appiconset/Contents.json b/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..118c98f --- /dev/null +++ b/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,38 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/Contents.json ---------------------------------------------------------------------- diff --git a/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/Contents.json b/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/UsergridGuy.imageset/Contents.json ---------------------------------------------------------------------- diff --git a/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/UsergridGuy.imageset/Contents.json b/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/UsergridGuy.imageset/Contents.json new file mode 100644 index 0000000..c19ad83 --- /dev/null +++ b/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/UsergridGuy.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "UsergridGuy.png", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/UsergridGuy.imageset/UsergridGuy.png ---------------------------------------------------------------------- diff --git a/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/UsergridGuy.imageset/UsergridGuy.png b/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/UsergridGuy.imageset/UsergridGuy.png new file mode 100644 index 0000000..b8a6844 Binary files /dev/null and b/sdks/swift/Samples/ActivityFeed/Source/Assets.xcassets/UsergridGuy.imageset/UsergridGuy.png differ http://git-wip-us.apache.org/repos/asf/usergrid/blob/60d60fed/sdks/swift/Samples/ActivityFeed/Source/Base.lproj/LaunchScreen.storyboard ---------------------------------------------------------------------- diff --git a/sdks/swift/Samples/ActivityFeed/Source/Base.lproj/LaunchScreen.storyboard b/sdks/swift/Samples/ActivityFeed/Source/Base.lproj/LaunchScreen.storyboard new file mode 100644 index 0000000..78686cd --- /dev/null +++ b/sdks/swift/Samples/ActivityFeed/Source/Base.lproj/LaunchScreen.storyboard @@ -0,0 +1,27 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="9531" systemVersion="15C50" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" initialViewController="01J-lp-oVM"> + <dependencies> + <deployment identifier="iOS"/> + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="9529"/> + </dependencies> + <scenes> + <!--View Controller--> + <scene sceneID="EHf-IW-A2E"> + <objects> + <viewController id="01J-lp-oVM" sceneMemberID="viewController"> + <layoutGuides> + <viewControllerLayoutGuide type="top" id="Llm-lL-Icb"/> + <viewControllerLayoutGuide type="bottom" id="xb3-aO-Qok"/> + </layoutGuides> + <view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3"> + <rect key="frame" x="0.0" y="0.0" width="600" height="600"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/> + </view> + </viewController> + <placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/> + </objects> + <point key="canvasLocation" x="53" y="375"/> + </scene> + </scenes> +</document>