Photofeed | iOS Universal Social Photo feeds App Template (Swift)

Photofeed | iOS Universal Social Photo feeds App Template (Swift)

Photofeed | iOS Universal Social Picture feeds App Template (Swift)

Both iOS and Android version can share the same Parse database by inserting the same App Id and Client Key strings in their Configs files

Feb 10th 2017
• Added some PFInstallation() code into the 'applicationDidBecomeActive()' function in AppDelegate.swift, in order to reset the app's badge icons to 0 
• Updated the User Guide with a new link for the APN .p12 certificates creation tutorial
Jan 29th 2017
• Added Facebook Login button in the Login controller in Storyboard, and its relative code in Login.swift, Info.plist and AppDelegate.swift
• Updated the User Guide
• Added the following .framework files:
Jan 21st 2017
• Added this line of code into Home.swift, SearchVC.swift and Me.swift (into their viewDidAppear() methods):
    UIApplication.shared.applicationIconBadgeNumber = 0
• Updated to Xcode 8.2.1
• Updated the User Guide
• Updated GoogleMobileAds.framework and its relative code
Dec 2nd 2016
• Added this simple line of code into the postButton() method in AddPost.swift:
     + "\(currentUser[USER_FULLNAME]!)".lowercased().components(separatedBy: " ")
in this way you'll be able to search posts by typing a user's full name too.
Nov 4th 2016
• Updated to XCode 8.1
• Removed all 'contView' UIViews from their ScrollViews since Apple has fixed the bug in Storyboard
Oct 25th 2016
• Added an IF statement into sendCommentButt() method in Comments.swift file, in order to prevent users to send comments with blank text
Oct 22nd 2016
• Added:
      "sound" : "bingbong.aiff" 
to all instances that send push notifications, in order for the notification sound to play at push received
•  Updated main.js file by adding a function to report a user, so the USER_PASSWORD_STRING is not needed anymore. We've updated the code that reports a user to call that Cloud Code function into OtherUserProfile.swift
Sep 27th 2016
* Changed Push Notification system to back4app push | Removed OneSignal
Sep 20th 2016
* Added the possibility to delete an Activity by swiping left -> Delete on a cell
* Fixed a layout bug on iPhone 6+ in the EditProfile controller in Storyboard
* Now you can tap your own post in the Me screen and see it fully.
* Added an AlertController that will recall the comments query in Comments.swift
Sep 18th 2016
• Updated to Xcode 8
• We had to embed all the views that are in ScrollViews into a UIView called 'contView' in Storyboard, so the app will keep all layouts ok due to a bug of Xcode 8 on Autoresizing mask. 
You'll find this line of code into viewDidLoad() methods in the .swift files that have a ScrollView:
    contView.frame.size.width = view.frame.size.width
NOTE: Due to the bug on Xcode 8, every time you'll reopen your Xcode project, you will have to select those 'contView' UIViews and set their width to 320 by using the Size inspector panel on the right size
Sep 14th 2016
• Added an if check for city cell's labels in Home.swift, SearchVC.swift, Me.swift and OtherUserProfile.swift, in the cellForRowAtIndexPath() methods, so the app won't crash if "city" field in your Parse Dashboard is nil (undefined). This is the correction:
    if postsClass[POSTS_CITY] != nil { cell.cityLabel.text = "\(postsClass[POSTS_CITY]!)" 
    } else { cell.cityLabel.text = "N/A" }

• Improved search by keywords, so we've edited:
a) SearchVC.swift file -> queryPosts() by adding an array of keywords
b) AddPost.swift -> postButton() by adding keywords for post's text. 
If this is an update for you, you need to do the following:
1. post a test post with the app with a test user.
2. Then enter your Parse Dashboard -> Posts class and search for the new generated "keywords" column, at your new post's row you'll see something like this: ["i","been","in","london"]
3. You'll have now to manually add all keywords to the other empty (undefined) rows of the "keywords" column by using the syntax above, so for instance if a post has "this is a great shot" text into 'textLowercase' column, copy that text and format it like this: ["this","is","a","great","shot"] and paste it into the empty filed of that post. This is because the app can't do that on already created posts, of course.
Aug 28th 2016:
• Accordingly to new EULA terms by Apple, we had to implement a "Report User" feature too, so we've added the following lines into Configs.swift:
   let USER_IS_REPORTED = "isReported" 
   let USER_REPORT_MESSAGE = "reportMessage" 
   let USER_PASSWORD_STRING = "passwordString" 

and updated the SignUp.swift file -> signUpButt() method by adding:
        userForSignUp[USER_PASSWORD_STRING] = passwordTxt.text
        userForSignUp[USER_IS_REPORTED] = false

• Edited queryPostsOfFollowing() method, in Home.swift, to check if a User has been reported and better loading all your posts.
• Edited cellForRowAtIndexPath() into Me.swift, the SHOW MY LIKES section
• Added the reportButton() method into OtherUserProfile.swift
• Added this lines into loginButt() in Login.swift:
       // Save passwordString
       user![USER_PASSWORD_STRING] = self.passwordTxt.text

IMPORTANT: So, if this is an update for you, you will have to sign up with a test user (you'll remove it later), so the app will create the 2 columns needed for reporting a user in  the User class in your own Parse Dashboard ("passwordString" and "isReported"). 
Then, refresh the User class in your Parse Dashboard and you'll see 3 new columns: 

"isReported" and "reportMessage" rows will be empty, so you'll have to set all "isReported" rows to FALSE.

Then, if you have other users registered in the User class and your app is live on the App Store, you must to change their passwords in the "password" column as you wish and email them a message similar to the following:

"Due to recent Security updates of this app, please do the following steps to reset your password:
1. open YOUR APP NAME, enter your Account screen and logout
2. In the Login screen, tap "Forgot password?" and insert the email address you've used to register in the app (which is also your username) and tap "Reset Password" 
3. Change your password with the email you'll get
4. Go back to YOUR APP NAME and login again with your username and the new password.
Thanks for understanding!" 

You as the Admin of the app should daily check your Parse Dashboard for reported posts or users and take action about it.

* If this is NOT an update and you've bought this app for the first time, just ignore all this :)

Photofeed is a Universal App Template where you can post your own pictures, location and relative text and get involved in a funny community.
You can also browse popular posts from other users, see their profiles, like and share their posts to popular social networks.

Since its backend is by Parse you don’t have to buy any domain/hosting, there are NO php files to upload to a web server so you’ll save some money for sever side. Worried about Parse shutting down? It won’t, please check this out:

Photofeed is a native XCode project, Swift language, Storyboard, Universal, super easy to customize, backend with Parse SDK hosted on

Need an html template to promote and showcase your own version of this app?

  • XCode 8.x project – Swift – 64bit
  • iOS 8/9/10+ – Universal – Storyboard
  • AdMob banners
  • Facebook login
  • Push Notifications for likes, follow and comments
  • Works with Parse backend hosted on back{4}app
  • Easily post your pictures, text and current location, like and comment posts of other users, delete your own ones.
  • Terms of User .html file and Report feature included
  • PDF User Guide included
  • PSD graphics included
  • Easy to customize, well commented code

Have fun with Photofeed, and don’t forget to rate it on your Downloads page!

Important Disclaimer: We’ve recently found out that some developers have bought our app templates, reskinned them just a bit and put them on sale on other source code markets similar to CodeCanyon, saying that they developed and own such source codes.
That is a serious copyright infringement, developers who buy our templates are allowed to reskin and sell them as apps on the App Store (accordingly to the License type they’ve purchased a template for), but are not allowed to put our original source codes for sale on source code markets, including CodeCanyon. We will report developers who made copyright infringements to the competent authorities. Thanks.