Code

Pikky | iOS iPhone Instagram-like Social Media Application

Pikky | iOS iPhone Instagram-like Social Media Application

Pikky | iOS iPhone Instagram-like Social Media Application - 1 Pikky | iOS iPhone Instagram-like Social Media Application - 2 Pikky | iOS iPhone Instagram-like Social Media Application - 3 Pikky | iOS iPhone Instagram-like Social Media Application - 4

Overview

Pikky is a great solution for those who need to quickly make a mobile app similar to Instagram, to post pictures and videos and build a nice community of media lovers, influencers or just funny people


Read Mobile and Web tutorials online

Android version of Pikky

Watch the video preview of Pikky on YouTube

Online documentation of Pikky app


Pikky | iOS iPhone Instagram-like Social Media Application - 5 XSApp is a HTML/CSS theme to create your awesome App Landing Page in no time. Clean, modern design, different header colors, easy to customize.
Pikky | iOS iPhone Instagram-like Social Media Application - 6
Pikky | iOS iPhone Instagram-like Social Media Application - 7
Pikky | iOS iPhone Instagram-like Social Media Application - 8



Pikky | iOS iPhone Instagram-like Social Media Application - 9 VintyMag is a complete Magazine/Newspaper Wordpress Theme where you can showcase your blog news in an old-fashioned look. It is easy to install and configure, and it has got 4 different Home and Categories layouts.
Pikky | iOS iPhone Instagram-like Social Media Application - 10
Pikky | iOS iPhone Instagram-like Social Media Application - 11
Pikky | iOS iPhone Instagram-like Social Media Application - 12



Description

Pikky is a full-working template (UI + Source Code) for sharing pictures and videos to the world, and find cool people to get in touch with.

Users can like, comment and share posts to social networks, Mail and SMS.
They can also edit their own profile, block inappropriate users, mute posts, turn comments off, and much more.

The Admin should daily check the database for reported content/users, and take action for it.

The design is clean, code is commented and project folders and files are well organized in the package.

• Check out the Features section below to see what this app does.
• Read the online Documentation to learn how to configure the template’s features and the database (Parse Dashboard).
• Keep an eye to the Change Log on the bottom of this page when an update gets released.

Backend

It’s backend is by Parse Server and it’s hosted on back4appNO MySQL database involved.
Parse Server is flexible, reliable, open source, based on Node.js and well supported by a large community of developers, and back4app is a great BaaS hosting website where you can configure your database, Push Notifications and other features in just a few clicks.

If you want to see a preview of the structure of the demo database, and also clone it in just a click, CLICK HERE!

If you want to use a nice Admin Panel to manage data of your database instead of the Parse Dashboard, sign up for a FOREVER FREE account on Adminca.com and watch this video to see how to create a Panel for your Parse App.


Extended License

As per Envato Marketplace Terms, the Extended License applies to all applications that charge money to their users. In case your users will not be charged of money through your own version of this app, you can still buy it under a Regular license.
Therefore, you must buy this template under and Extended License if your plans are either one or more of the following:
  • Add In-App Purchase or any other Payment Gateway in the source code and publish the app for free on the App/Play Store – NOTE: If you want to publish your own version of this application for FREE only, then you can still buy it under a Regular License.
  • Publish this application as a PAID app on the App Store.
  • Transfer the live app of your own verison of this app on the App/Play Store to another owner by selling your ownership on flippa.com or similar marketplaces – IMPORTANT: You are NOT allowed to sell the original source code of this template anywhere due to copyright infringement.


Features

iOS Swift language – Native Xcode project – Edit the template as you wish with the power of Xcode and Swift.

Storyboard, iOS 9.0 and above, Universal – Run your app on all iOS devices

Backend with Parse Server hosted on back4app – Built on a great and reliable BaaS that offers many features with just a few clicks, it’s super easy to create and set up a database on back4app, as well as edit the Parse Server’s SDK code.

Browse posts from people you follow and yours too – In the Home screen, users and see a list of photos submitted by the ones they are following, as well as their own images.

Instant messaging feature – Privately chat with the people you like.

Check out interesting users – The Home screen shows a horizontal grid of suggestions for interesting people. They can be followed directly from this list.

Set Verified users – Only the Admin can do that, it’s just a boolean flag that needs to be set in the Parse Dashboard – the database.

Control Commenting – Poeple can tunr on and off comments for specific posts.

Edit/Delete Posts – Besides submitting images, Users can also edit or delete them later.

Moments – This feature is to record and share videos that can be viewed in the Home screen. They will get automatically deleted from the database after 24 hours.

Report Posts or people – Help the Admin on keeping the app clean by reporting abusive content or users.

Mute Posts – This option will hide posts from the selected Users.

Like, comment and bookmark Posts – These are the social experience that this application couldn’t miss.

Search by Tags, usernames or keywords – Many different ways to perform a search are offered in this template.

Custom Camera – Take square pictures or record videos within the app, then apply the filters you want to enhance them.

Add a caption, tags and current location to media while sharing them – Personalize pictures and videos with more info.

Notifications screen – People can check likes, comments and followers in this section.

See your Account’s info – A custom screen allows users to view their data.

Setting screen – from this page it’s possible to reset a password, see liked and bookmarked posts, a list of blocked users, and set Push Notifications on/off.

Terms of Use and Privacy Policy HTML file (GDPR compliant) – The template contains a ‘tou.html’ file the Admin can edit to display his Terms of Service to the app’s folks.

Facebook login – Quickly log in or sign up with Facebook from the Intro screen.

Push Notifications – With the aid of Parse Push, users will receive notifications for likes and comments

AdMob Interstitial ads – Get some revenue from full-screen advertisement banners

Modern, clean design – The UI has been carefully crafted to offer the best user experience to your clients.

Online Documentation – Read the extensive guide of this template to be able to configure it properly.

PSD icons included in the package – App and buttons icons are stored into a PSD folder, for easy image replacement.


Requirements

The latest official version of Xcode – Beta versions of an IDE usually never work 100% properly, and the code of this app has been written using the latest official version of Xcode and you can download it from the Mac App Store. You must use it and avoid Betas.

An Apple Mac computer, updated to its latest OS version – It’s always good to keep your macOS up to date, technology keeps growing and I follow its changes, as well as updating my templates every time a new OS gets released.

An Apple Developer Account with an active iOS Development Program – This is needed for you to publish apps on the iTunes App Store. You can still edit this template on code without that account, but you won’t be able to run it on your real iOS device since you’ll need a Team ID.

Basic knowledge of Xcode and Swift language – You don’t need to be a skilled or professional developer, anyway it’s recommended to have at least the basic knowledge of what you’re dealing with, in order to be able to customize this template and publish your applications on the App Store.

A free account on back4app.com – You can create and edit your Parse App and database, get the necessary keys for configurations and test this template for free. It has limitations though, so please check the Pricing table and consider subscribing for a paid plan after your app got published on the App Store.

An active AdMob account – Unless you want to remove ads in this app, you need to sign up for an AdMob account to display them.

A real device to test the app before submitting it to the App Store – iOS Simulators may fail during tests, they are not reliable as a real device is, so I strongly recommend you to always run this application on a real phone/tablet. This is also suggested by Apple’s official Guidelines.

Change Log

May 21, 2020

- Enclosed the 'optionsButt()' function's code of the 'UserProfile.swift' file inside a fetchInBackground() block, in order to refresh the userObj while getting mutedBy and blockedBy arrays data:
    // Re-fetch userObj
    userObj.fetchInBackground { (user, error) in
        self.userObj = user! as! PFUser

        // rest of the code...

    } //./ userObj fecthInBackground

- Added the possibility to delete a Moment video by adding an UIAlertAction() in the 'optionsButt()' function in WatchVideo.swift

April 28, 2020

- Due to Apple's deprecation about UIWebView, I've updated the following files inside the 'Parse' folder:
    Parse.framework
    ParseFacebookUtilsV4.framework
    Bolts.framework
    FBSDKLoginKit.framework 
    FBSDKCireKit.framework 

- Removed the FBSDKShareKit.framework

** IMPORTANT** - If this is an UPDATE for you, you should perform the following steps:
- Open your old Xcode project and expand the 'Frameworks' folder from the files list menu on the left pane
- Select the framework files mentioned above and the FBSDKShareKit.framework too, right-click and select 'Delete' .-> Move to Trash, so those files will be removed from the 'Parse' folder
- Open the 'Parse' folder inside the updated project folder and copy all its files
- Open the 'Parse' folder inside your old project folder and paste them
- Select those files and drag them inside the 'Frameworks' folder from the files list menu on the left pane in Xcode, and click the 'Finish' button
- Clean the project and run the app, Xcode should give you a few errors:
    'FBSDKGraphRequest' has been renamed to 'GraphRequest'
    Cannot call value of non-function type 'ApplicationDelegate'
    'sharedInstance' has been renamed to 'shared'

So you can easily fix those errors by clicking on their red dots -> Fix button. Xcode will perform name changes for you.
Alternatively, you may compare your old 'AppDelegate.swift' and Intro.swift' files to the updated ones and perform the few code updates

April 24, 2020

- Updated the GoogleMobileAds framework files into the 'AdMob' folder:  removed the old .framework files in the 'Frameworks' folder in Xcode and imported the new ones - this should fix the UIWebView warning message from Apple after submitting the app on the App Store

January 20, 2020

- Added this line inside the 'updateProfileButt()' function in EditProfile.swift:
    currentUser[USER_USERNAME_LOWERCASE] = usernameTxt.text!.lowercased()

- Added this line inside the 'applicationDidBecomeActive()' function in AppDelegate.swift:
    if application.applicationIconBadgeNumber > 0 { application.applicationIconBadgeNumber = 0 }

January 18, 2020

- Replaced the following lines from the 'queryPosts()' function in the Account.swift file:
    query.skip = skip3
    self.skip3 = self.skip3 + 100
with:
    query.skip = skip
    self.skip = self.skip + 100

in order for the app to not crash while refreshing the screen

- Added this function to the Account.swift file:
    @objc func callQuery() {
        skip = 0
        postsArray = [PFObject]()
        postsCollectionView.reloadData()
        queryPosts()
    }

- Called that functions from the 'viewDidload()' and 'refreshData()' functions:
    callQuery()

January 17, 2020

- Removed the appleButton View from the Storyboard, because Apple wants apps to use its default 'Apple Sign in Button', no custom and well-designed buttons.

- Edited the Intro.swift file by adding some code to programmatically create the 'Apple Sign in Button' into the 'viewDidLoad()' function, and by replacing:
    @IBAction func appleButt(_ sender: Any) {
with:
    @objc func appleButt() {

- Removed these lines too:
    @IBOutlet weak var appleButton: UIButton!
    appleButton.layer.cornerRadius = 22

January 15, 2020

- Changed:
    queryFollowersFollowingPeople()

into: 
    DispatchQueue.main.asyncAfter(deadline: .now() + 1, execute: {
            self.queryFollowers()
            self.queryFollowing()
    })

inside the 'viewDidAppear()' function in the Account.swift and UserProfile.swift files.

- Edited the queryFollowersFollowingPeople()' function in the Account.swift and UserProfile.swift files by splitting it into 2 functions.
As usual, compare your old files with the updated ones to perform changes.

January 14, 2020

- Updated the 'main.js' file to properly call the Background Job with Parse Server 3.9.x version
** THIS MEANS NO CODE AND UI CHANGES, ONLY THE main.js FILE HAS BEEN EDITED, SO YOU SHOULD REPLACE YOUR OLD main.js FILE IN THE CLOUD CODE BOX ON BACK4APP**

January 13, 2020

- Added Apple Sing In button in the Intro controller of the Storyboard 
- Added the 'Sign In with Apple' capability in the Capabilities tab in XCode (YOU SHOULD TO THE SAME ON YOUR OWN IN YOUR PROJECT!)
- Edited the Intro.swift file by adding the Apple Sign In code
- Added an 'apple_icon' ImageSet in the Assets.xcassets folder
- Edited the Login and SignUp controllers in the Storyboard and their relative swift files

- Replaced:
    vc.modalPresentationStyle = .overFullScreen
    present(vc, animated: true, completion: nil)

with:
    navigationController?.pushViewController(vc, animated: true)

in all those @IBAction functions that instantiate the "Intro" controller of the Home.swift and Settings.swift files. 

- Updated the online Documentation

December 23, 2019

- Updated the 'main.js' file to compile with the latest Parse Server 3.x version | Remember to update the Parse Server version of your app on back4app from the 'Manage Parse Server' section!

December 17, 2019

- Updated the 'main.js' file to compile with the latest Parse Server 3.x version.
** NOTE: IF THIS IS AN UPDATE FOR YOU, PLEASE DO THE FOLLOWING: **
1. Update your Parse Server to the latest version (currently it's 3.9.0) from the 'Manage Parse Server' section of your Parse App on back4app- unless you already have the latest version selected.
2. Upload the updated 'main.js' file into the 'Cloud Code Function' section of your app on back4app, overwrite the existing one and Deploy it.

November 11, 2019

Added this code into the 'Info.plist' file, in order to force Light Mode for the app even when the device is on Dark Mode:
    <key>UIUserInterfaceStyle</key>
    <string>Light</string>

NOTE: You can right-click on the Info.plist file and select 'Open As -> Source Code', then paste that code anywhere 

October 3, 2019

- Edited the 'likeButt()' and 'postComment()' functions in the 'Comments.swift' file, since there was something wrong

September 29, 2019

- Edited the Configurations.swift file by adding this line:
    let USER_USERNAME_LOWERCASE = "usernameLowercase" 

- Edited the Intro.swift file -> 'getFacebookUserData()' function by adding this line:
    currentUser[USER_USERNAME_LOWERCASE] = username.lowercased()

- Edited the SignUp.swift file -> 'signupButt()' function by adding this line of code:
    currentUser[USER_USERNAME_LOWERCASE] = usernameTxt.text!.lowercased()

- Edited the NewMessage.swift file -> 'queryUsers()' function as it follows:
    query.whereKey(USER_USERNAME_LOWERCASE, contains: searchStr)

*** IMPORTANT: If this is an update for you, please follow these steps:
1. Perform the changes, update your old code, then run the app on your device.
2. Sign up as a new user, in order for the app to create a new column in your Parse Dashboard called 'usernameLowercase'
3. Kill the app and enter your Parse Dashboard -> User class
4. Search for that new column. You'll see that all the cells of that column are empty (undefined).
5. Now you must manually type the lowercase string of the user's row in the empty cells - just copy the value of the 'username' cell into the 'usernameLowercase' empty cell and, in case the username has some capital letter, make it lowercase.
EXAMPLE: a user has signed up with a username like 'JohnDoe'. Copy it, paste it in the empty cell of its 'usernameLowercase' column and transform it as 'johndoe'

September 28, 2019

- Removed all frameworks from the 'Embed Frameworks' section of the 'Build Phases' tab
- Removed the code inside the 'Run Script' section (still in Build Phases)
- Replaced the Bolts.framework file with an older version - it's in the Parse folder

In this way, you'll be able to successfully Archive the app and submit your binary to the App Store

September 24, 2019

- Updated to Xcode 11, iOS 13
- Added a 'Launch Screen.storyboard' file to the project and customized it with an ImageView that contains the 'launch_screen' ImageSet - which was added into the 'Assets.xcassets' folder
- Assigned the 'Launch Screen' storyboard file to the 'Launch Screen File' field in the General tab 
- Removed the BrandAssets folder from the Assets.xcassets one
- Removed the row called 'Asset Catalog Compiler Launch Image Name - Brand Assets' from Build Settings
- Added this line of code above all instances of 'present(vc, animated: true, completion: nil)' due to iOS 13 new Modal system:
    vc.modalPresentationStyle = .fullScreen

- Downgraded the Facebook Login, Core and Share SDK frameworks to version 4.38.0, because the new SDK is not ready for iOS 13 yet :(
- Increased the height of TopViews in some Controllers in the Storyboard
- Added this piece of code inside the 'showUserDetails()' function in Account.swift:
    // Call query
    if mustReload {
        mustReload = false
        Timer.scheduledTimer(timeInterval: 1.0, target: self, selector: #selector(queryPosts), userInfo: nil, repeats: false)
    }

- Edited the 'Messages.swift' file in order to better load cells into the messagesTableView - compare your old file with the updated one to perform the code changes in your current Xcode project.

** PLEASE NOTE: You may see a bunch of Buildtime warnings while running the app on your device via Xcode, saying:
"Auto Layout Localization: Views without any layout constraints may clip their content or overlap other views".
 Do not worry about it, just ignore those warnings - they aren't errors - and the app will still work perfectly and the design won't get messed up.

September 10, 2019

- Replaced the UIWebView with WebKitView in the 'TermsOfService' ViewController in the Storyboard
- Edited the code of the 'TermsOfService.swift' file, since Apple no longer accepts apps with UIWebView
- Changed 'Builds for' value from '9.0 and Later'  to 'iOS 11.0 and Later' in the File inspector of the Storyboard

June 19, 2019

- Updated the .framework files in the 'AdMob' folder
- Updated the Facebook's .framework files in the 'Parse' folder to v5.0.0
- Added the FBSDK frameworks file and Bolts.framework in the 'Embedded Binaries' section of the 'General' tab in Xcode, as shown here: https://i.postimg.cc/WbK71ZQg/embedded-binaries.png

June 7, 2019

- Updated the .framework files into the 'Parse' folder to 1.17.2 version
- Replaced all instances of 'PFFile' into 'PFFileObject' in almost all swift files  

May 8, 2019

- Added this code at the end of the viewDidAppear() function in the Home.swift file:
   // Call queryPosts
   if mustReload {
       mustReload = false
       queryPosts()
       DispatchQueue.main.asyncAfter(deadline: .now() + 1, execute: {
           self.queryPosts()
       })
    }

- Added this variable on the bottom of the Configurations.swift file:
    var mustReload = false

- Added this line into the signupButt() function in the SignUp.swift file:
    mustReload = true

- Added this line into the loginButt() function in the Login.swift file:
    mustReload = true

In this way, after a user signs up or logs in the app for the first time, the Home screen launches the necessary queries without needing to pull down the finger to refresh.

March 29, 2019

- Updated to Xcode 10.2 - Swift 5

March 22, 2019

- Updated AdMob SDK to 7.42.0 version, which means that I've added the following .frameworks files to the project:
   • GoogleMobileAds.framework
   • GoogleAppMeasurement.framework
   • GoogleUtilities.framework
   • nanopb.framework

- Added the "-ObjC" value in the 'Other Linker Flag' row in the 'Build Settings' tab
- Added 'import GoogleMobileAds' on the top of the 'AppDelegate.swift' file
- Added the following code into the 'didFinishLaunchingWithOptions() delegate function in the 'Appdelegate.swift' file:
    // Initialize AdMob
    GADMobileAds.sharedInstance().start(completionHandler: nil)

- Updated the Documentation

January 31, 2019

- Updated the following Facebook SDK Frameworks into 4.40.0 version:
    FBSDKCoreKit.framework
    FBSDKLoginKit.framework
    FBSDKShareKit.framework

You can find those .framework files into the 'Parse' folder - it's into the project folder.
November 5, 2018
- Edited the 'cellForItemAt indexPath()' delegate function in Search.swift and Home.swift files, in order to fix the bug on Muted Posts and Blocked Users
- Changed the design of the Documentation

October 24, 2018

- Edited the Search controller in Storyboard and its relative Search.swift file in order to show popular tag buttons on the top of the screen and make them search for posts with the selected keyword on click 
- Edited 'queryPosts()' function in Search.swift in order to query more than 100 posts with the skip option
- Added 8 images in the TAG BUTTONS folder (into the Assets.xcassets folder)



Support

For any support requests, please contact me through my Profile’s Contact Form

Rate my Work

Your support is always greatly appreciated, from comments to product’s reviews, so please click here to rate your purchases!



Flag Counter

by
by
by
by
by
by