Created: 13/04/2022
Latest Update: 13/04/2022
By: Angopapo
Support: support.angopapo.com

This file was created to serve as a guide helping you to make small changes in the Heyto application, to give
it the look you want and also help you to install it on an online server.
The table on the side contains the topics that we will cover until you have the application
installed on the server, allowing anyone anywhere in the world to access your product and enjoy
the services.
Firebase used for Google Login , Phone Login, Dynamic Links, Push notifications, Monitoring, Analytics and Crashlytics
Push notifications for iOS needs apple apns certificate files in .p12 format, if you need help to create it click here: Firebase developer console
Push notifications for Android needs SenderID and FCM Token
Push notifications for Web needs Web Push Token
- Google Login and Phone Number Login for Android needs SHA-1 and SHA-256 correctly added in firebase
Google Places used to Set City and Country including Geo Coordinates
Google Admob used to show Banner and Rewarded Video Ads Only for iOS and Android
Now create your ads for Profile banner and Rewarded Video
Agora.io used for Live Streaming, Video Call and Voice Call
Facebook used for Facebook Login in Android , iOS and Web
Apple Login used for Apple Login in iOS , Android and Web
Before you can start integrating (or even testing) Sign in with Apple you need a paid membership to the Apple Developer Program. Sign in with Apple is one of the restricted services which is not available for free with just an Apple ID (source).
If you don't have one yet, create a new one at https://developer.apple.com/account/resources/identifiers/list/bundleId following these steps:
Description and Bundle ID, and select the Sign In with Apple capability
In case you already have an existing App ID that you want to use with Sign in with Apple:
If you have change your app's capabilities, you need to fetch the updated provisioning profiles (for example via Xcode) to use the new capabilities.
The Service ID is only needed for a Web or Android integration. If you only intend to integrate iOS you can skip this step.
Go to your apple developer page then "Identifiers" and follow these steps:
Next go to https://developer.apple.com/account/resources/identifiers/list/serviceId and follow these steps:
clientIDNow that the service is created, we have to enable it to be used for Sign in with Apple:
Domains and Subdomains add the domains of the websites on which you want to use Sign in with Apple, e.g. example.com. You have to enter at least one domain here, even if you don't intend to use Sign in with Apple on any website.Return URLs box add the full return URL you want to use, e.g. https://example.com/callbacks/sign_in_with_appleIn order to communicate with Apple's servers to verify the incoming authorization codes from your app clients, you need to create a key at https://developer.apple.com/account/resources/authkeys/list:
Now everything is set up on Apple's developer portal and we can start setting up the server.
In your Parse Server you need to add a post endpoint for this to work, Add copy and paste the code bellow, then change com.angopapo.heyto to your own Android Package name
const express = require("express");
const bodyParser = require("body-parser");
var appleAuth = express();
appleAuth.use(bodyParser.urlencoded({ extended: false }));
appleAuth.post("/apple/login", (request, response) => {
const redirect = `intent://callback?${new URLSearchParams(request.body).toString()}
#Intent;package="com.angopapo.heyto"; scheme=signinwithapple;end`;
console.log(`Redirecting to ${redirect}`);
response.redirect(307, redirect);
});
const listener = appleAuth.listen(appleAuthPort, () => {
console.log("Verify server is running on port: " + listener.address().port);
});
At this point you should have added the Sign in with Apple capability to either your own app's capabilities or the test application you created to run the app.
In case you don't have Automatically manage Signing turned on in Xcode, you will need to recreate and download the updated Provisioning Profiles for your app, so they include the new Sign in with Apple capability. Then you can download the new certificates and select them in Xcode.
In case XCode manages your signing, this step will be done automatically for you. Just make sure the Sign in with Apple capability is activated as described in the example below.
Additionally this assumes that you have at least one iOS device registered in your developer account for local testing, so you can run the example on a device.
Runner (file browser side bar) -> Targets -> Runner -> Signing & Capabilities), as otherwise Sign in with Apple will fail without visual indication (the code will still receive exceptions)clientID used when validating the received code parameter with Apple's server is dependent on the client: Use the App ID (also called "Bundle ID" in some places) when using codes from apps running on Apple platforms, and use the service ID when using a code retrieved from a web authentication flowGo to lib-> app-> config.dart and Update: appleLoginClientId, appleAndroidLoginRedirectUrl and appleWebLoginRedirectUrl
- Apple Login for Android and Web is disabled by default in your app, you need to enable it in lib-> app-> setup.dart -> isAppleLoginEnabled = true once setup finished
- Apple Login for iOS is enabled by default since is required for Apple to Approve the app, You can disable it in lib-> app-> setup.dart -> isAppleLoginEnabledForIOS = false but you also will need to disable Facebook Login and Google Login
Agora.io used to send Gifs in Messages
We used Parse Server has backend, for more information about it, click on the link.
Since this project is developed with Flutter, make sure to correctly install flutter and dart in your computer
If you need help to install flutter click here: Install Flutter
You can use Android Studio or Visual Studio Code, make sure to use latest versions
$ flutter pub get and wait to finish$ cd ios then $ pod install and wait to finish$ flutter pub run change_app_package_name:main com.your.package.nameindex.html and change description and google-signin-client_idfirebase-messaging-sw.js and change firebase.initializeApp content assets-> images and override ic_logo.png and ic_logo_white.png with your own Logos (Light and Dark)$ flutter pub run flutter_native_splash:createParse Server has Parse Dashboard But since it's not easy to use, we decided to offer an easy and modern Admin Panel for you.
To Install Admin Panel is very easy and also it can be installed on any hosting provider, Shared, VPS, Dedicated, Cloud or others. Keep in mind that you need a Parse Server running somewhere, and at least 1 app is running, in order to get this Admin panel to work properly.
admincp.zip you can found it in Main Files.zip$ npm install in Admin Panel root Make sure you have NodeJS installedConfigs.php file and change: Website root url, AppId, RestApiKey and MasterKey of your Parse Server App.DON'T CREATE USER MANUALLY IN YOUR PARSE DASHBOARD, MAKE SURE YOU REGISTERED USER IN WITH APP.
Go to Parse Dashboard, and Under Classes, click in Users
Choose User to turn admin, navigate torolecolumn and set it's valuefromuser toadmin
Open your browser and input your admin panel url
Login using email and password of any User you set admin role.
Once Logged in, you will directly see how easy is to use Admin Panel, It allows you to see and manage almost everything of your app, but for advanced use, for example to delete or update objects, you will need to use your Parse Dashboard But we process that, we will add more feature in the next version.
With Admin Panel version 1.0.0 you can:
Gifts are animated images that Users can offer each others for any reason, Heyto apps accept only Lottie files in Json format. You can download lottie files here
Gift Name is just for you to identify it, Gift Tickets is an amount that is needed for someone to purchase it and Gift File is a file download in Lottie website or created with After Effect and bodymovin, also it must be in JSON format extension.
This Admin Panel uses there programing languages
We also used these:
Thank you for reading the documentation. If you still have any question or any problem, please contact with us. We will give you best support. Thanks.