Pikky | iOS iPhone Instagram-like Social Media Application [XServer]

Description

Pikky | iOS iPhone Instagram-like Social Media Application [XServer] - 1 Pikky | iOS iPhone Instagram-like Social Media Application [XServer] - 2 Pikky | iOS iPhone Instagram-like Social Media Application [XServer] - 3 Pikky | iOS iPhone Instagram-like Social Media Application [XServer] - 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

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.
• Check out the demo Database, login as:
Username: demo
Password: demo
• Keep an eye to the Change Log on the bottom of this page when an update gets released.

Backend

The backend of this template is XServer, so you can either buy the XServer REST API an install it on your own VPS server, or create an account on XServer.app and a Database for this app.
After performing the configurations mentioned below, you will run the app and see no content, so Sign Up with a test user in order to create a test account and start testing the app.
NOTE: in case you want to implement your own backend to this template, you do not need to buy the XServer API, nor create an account on XServer.app, but please be aware that implementing a different backend to this template must be performed by you or your developers.

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 XServer – 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 XServer.app, as well as use the XServer REST API hosted on your VPS server.

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 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.

Google sign in – Quickly sign in with Google from the Intro screen.

Push Notifications – Users will receive Push 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.

XServer API – You can either create a free account and a Database on XServer.app, or buy the XServer REST API and host it into your own VPS server.

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

August 12, 2020

- Wrapped the code of the 'showUserDetails()' function in the UserProfile.swift file into an 'XSRefreshObjectData()' function, in order to always get the updated 'userObj' object while entering a user's profile.
- Edited the InterestingPeople.swift file by adding the 'viewDidAppear()' function
- Edited the 'viewDidLoad()' functin of the Follow.swift file

July 20, 2020

- Moved some code out of the 'XSGetPointer()' function from the 'cellForRow atIndexpath()' function in Home.swift
In this way images get loaded faster while scrolling down

July 15, 2020

** MAJOR CHANGE **
Replaced Parse Server with the XServer backend: https://xserver.app
Please read the Documentation and this page for more info

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

 

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

 

1. All digital products are the most recent version, with no possibility of free updates. After payment, you can request an update to the most recent version for 7 days if a new version is released. We free support within 7 days.

2. After the purchase is confirmed, download links will be available for 7 days. If a license is required, please contact us via email or ticket for assistance with activation. Our license is only valid for activation and does not include support.

3. We provide Mobile, PHP script installation services for $19.90. Please create a backup after installation as we do not support re-installation. For mobile app source code, we do not offer installation services.

4. If you have any questions, please contact us by email [email protected] or create a ticket on this page

5. Please note that any digital products presented on the website do not contain malicious code, viruses or advertising. You will receive the original files from the developers. We do not sell any products that have been downloaded from other websites.

6. The response time can last up to 6 hours.