Chips
Example
To run the example project, clone the repo, and run pod install
from the Example directory first.
Requirements
- iOS 8.0+
- Xcode 8
Installation
Chips is available through CocoaPods. To install it, simply add the following line to your Podfile:
pod 'Cips'
if not want use all service , check service usage for installation each service
Usage
import Cips
#import <Cips/Cips.h>
Qnock Usage
Note that the Firebase/Core
and Firebase/Messaging
is required if using QNOCK SDK.
pod 'Cips/Qnock'
Register Qnock
Register qnock on appdelegate first using clientid and clientsecret from cms QNOCK.
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
Qnock.initWithClientId(clientid, withClientSecret: clientsecret) { (token) in
}
return true
}
Receiving Notification
Use when notification received on device. This used on App Delegate
func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject]) {
let data = Qnock.instance().notifReceived(userInfo)
}
Subscribe Channel
This function use for subscribe or register new user id or new channel to qnock.
Userid on this function from userid member client not userid Qnock.
Qnock.instance().subscribe(FCMTOKEN, withChannel: channel, userID: userid) { (response) in
//complete register
}
Unsubscribe Channel
This function to use unsubscribe or unregister channel from qnock. Use when user want to stop notification or user has logout.
Qnock.instance().unsubscribe(FCMTOKEN, withChannel: channel) { (response) in
//complete unsubscribe
}
Change Environment
Change environment QNOCK PRODUCTION mode or SANDBOX mode
Qnock.setEnvironment(ENVIRONMENT)
Squad Usage
pod 'Cips/Squad'
pod 'Cips/SquadSocial' // use this pod if use social login with fb
Init Squad
Init Squad on appdelegate first using clientid and clientsecret from cms Squad.
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
Squad.initWithClientId(clientid, withClientSecret: clientsecreet withCompanyId: companyid)
return true
}
List Function
Login
This function to login on squad
Squad.instance().login(withEmail: email, andPassword: password) { (respon) in
//respon on squad
//get token an refresh token
}
Register
This function to register on squad
Squad.instance().registerFirst(withEmail: email, password: pass, firstName: firstname, lastName: lastname, companyid: companyid, redirecturi: reduri, verifyuri: veriuri) { (respon) in
//respon on squad
}
note redirect uri and verfyuri can use from squad or make self
Get User Info
This function to get user info profile
Squad.instance().userInfoGet(withToken: token) { (respon) in
//respon on squad
}
Edit Profile
This function to edit profile squad
Squad.instance().profileEdit(withData: data) { (respon) in
}
This field data format to send on profile edit, but not all field to insert, its depend on client and cms
let data = [
"access_token":"token",
"user_id":"userid",
"phone_number":"number",
"first_name":"first",
"last_name":"last",
"birth_place":"place",
"address":"address",
"country":"countryid",
"city":"cityid",
"zip":"zipcode",
"gender":"genderid",
"birth_date":"date"
]
note : gender id = 2 : male , 1 : female
You can get country list and city list include id from this function
Squad.instance().getListCountry { (respon) in
//list country
}
Squad.instance().getListCity(withCountryId: countryid) { (respon) in
//list city
}
Date format for birthdate is YYYY-MM-dd
Update profile picture
This function to update profile picture squad user
Squad.instance().uploadImage(imageData, userid: userid, accessToken: token) { (respon) in
//Respon Squad
}
Refresh Token
This function to refresh token if token expired
Squad.instance().tokenRefresh(withToken: refresh_token) { (respon) in
//Respon Squad
//update accesstoken and refreshtoken
}
Logout
This function to logout user squad
Squad.instance().logoutAccessToken(access_token, refreshToken: refresh_token) { (respon) in
//Respon Squad
}
Get user info for edit profile
This function to get user info for edit profile, respon field different each client
Squad.instance().resourceWithParamsGet(withToken: access_token) { (respon) in
//Respon Squad
}
Forgot Password
This function to get forgot password
Squad.instance().passwordForgot(withUserid: "", email:email, verifyUrl: verifyuri, redirectUrl: redirecturi) { (respon) in
//Respon Squad
}
note: you can leave userid empty string
Update Password
This function to update password user squad
Squad.instance().passwordUpdate(withAccessToken: access_token, userid: userid, oldPassword: oldPass, newPassword: newPass) { (respon) in
//Respon Squad
}
Update Email
This function to update email user squad
Squad.instance().emailUpdate(withAccessToken: access_token, userid: userid, newEmail: email, password: password) { (respon) in
//Respon Squad
}
Social
This function to access squad using social
- Check Social
This function to check if social account has exist in squad
```swift
Squad.instance().socialCheckFromFacebook(withAccessToken: "token_fb", withUserId: "userid_fb") { (respon) in
}
```
```swift
Squad.instance().socialCheckFromTwitter(withUserId: "userid_twitter", withAccessToken: "token_twitter", withAcessTokenScret: "secret_twitter", withConsumerKey: "consumer_token_twitter", withConsumerSecret: "consumer_secret_twitter") { (respon) in
}
```
respon code from squad
200 = Success Login with social
202 = Failed login with Social but your email already registered on squad -> Use Login Social to continue login
203 = Failed login with social and cant access email on social ->Use login social or register social to continue
204 = Failed login with Social and your email not registered on squad -> Use register social to continue
- Login Social
This function to login with social first time, if return code from check social is 202 or 203
```swift
Squad.instance().socialLoginFromFacebook(withEmail: "Email_squad == email_fb", withPassword: "passwor_squad", withUserId: "userid_fb", withAccessToken: "token_fb") { (respon) in
}
```
```swift
Squad.instance().socialLoginFromTwitter(withEmail: "email_twitter == email_squad", withPassword: "pass_squad", withUserId: "userid_twitter", withAccessToken: "token_twitter", withAcessTokenSecret: "secret_twitter", withConsumerKey: "consumer_token_twitter", withConsumerSecret: "consumer_secret_twitter") { (respon) in
}
```
- Register Social
This function to register with social , if return code from check social is 203 or 204
```swift
Squad.instance().socialRegister(from: "facebook or twitter", withEmail: "email", withPassword: "pass", withUserId: "userid_social", withAccessToken: "token_social", withAcessTokenScret: "secret_twitter or 1 if fb", withConsumerKey: "consumer_token of 1 if fb", withConsumerSecret: "consumer_secret or 1 if fb", firstName: "first_name", lastName: "last_name", companyid: "company_id", redirecturi: "redirect_uri", verifyuri: "verify_uri") { (respon) in
}
```
List View Controller Squad
Squad provide basic view controller you can use for login, register, update profile , etc. This list fuction to show view controll from squad
Login View Controller
This to use login , register and forgot password from squad
SquadViewHelper.squadLoginView(with: view_controller, delegate: delegate)
Squad Controller Delegate
func squadLoginResponse(_ data: [AnyHashable : Any]!, status isSuccees: Bool, message: String!, controller: UIViewController!) {
}
Initialize this delegate if you usins social login with Twitter
func login(twitter complete: ((String?, String?, String?, String?, String?) -> Void)!) {
//login twitter sdk
complete("token_twitter","secret_twitter","consumer_token_twitter","consumer_secret_twitter","userid_twitter")
}
Profile View Controller
This to use view profile, edit profile and change profile picture squad
SquadViewHelper.squadProfileView(with: view_controller, token: token)
SpotLight Usage
Login
This function to init squad on first time app run
[Spotlight initWithAppsSecret:APPS_SECRET withClientId:APPS_ID withCompanyId:COMPANY_ID completion:^(bool isSuccess, NSString *responseToken) {
NSLog(@"LOGIN SPOTLIGHT %@",responseToken);
}];
Channel List
This function get channel list
[Spotlight.instance spotlightChannelListWithUserId:@"guset" onComplete:^(SpotlightResponseModel *response) {
}];
Homepage
List function to get list article homepage by type and channel
- Homepage Headline with Channel
[Spotlight.instance spotlightHomepageHeadlineWithChannel:_channel onComplete:^(SpotlightResponseModel *response) {
}];
- Homepage Story with Channel
[Spotlight.instance spotlightHomepageStoryWithChannel:_channel onComplete:^(SpotlightResponseModel *response) {
}];
- Homepage Editor with Channel
[Spotlight.instance spotlightHomepageEditorChoiceWithChannel:_channel onComplete:^(SpotlightResponseModel *response) {
}];
- Homepage Newsboost with Channel
[Spotlight.instance spotlightHomepageNewsboostWithChannel:_channel onComplete:^(SpotlightResponseModel *response) {
}];
- Homepage Commercial with Channel
[Spotlight.instance spotlightHomepageCommercialWithChannel:_channel onComplete:^(SpotlightResponseModel *response) {
}];
- Homepage Boxtype with Channel
[Spotlight.instance spotlightHomepageBoxTypeWithChannel:_channel onComplete:^(SpotlightResponseModel *response) {
}];
Article
List function to get list article by type
- Basic List Article
[Spotlight.instance spotlightArticleWithWithUserId:@"guset" page:0 limit:10 onComplete:^(SpotlightResponseModel *response) {
}];
- Basic List Article with Channel
[Spotlight.instance spotlightArticleWithChannel:channelNo withUserId:@"guest" page:0 limit:10 onComplete:^(SpotlightResponseModel *response) {
}];
- Standard List Article
[Spotlight.instance spotlightArticleStandardWithUserId:@"guest" page:0 limit:10 onComplete:^(SpotlightResponseModel *response) {
}];
- Standard List Article with Channel
[Spotlight.instance spotlightArticleStandardWithChannel:channelNo withUserId:@"guest" page:0 limit:10 onComplete:^(SpotlightResponseModel *response) {
}];
- List Article Gallery
[Spotlight.instance spotlightArticleGalleryWithUserId:@"guest" withPage:0 limit:10 onComplete:^(SpotlightResponseModel *response) {
}];
- List Article Gallery with Channel
[Spotlight.instance spotlightArticleGalleryWithChannel:channelNo withUserId:@"guest" page:0 limit:10 onComplete:^(SpotlightResponseModel *response) {
}];
- List Article Group
[Spotlight.instance spotlightArticleGroupWithUserId:@"guest" withPage:0 limit:10 onComplete:^(SpotlightResponseModel *response) {
}];
- List Article Group with Channel
[Spotlight.instance spotlightArticleGroupWithChannel:channelNo withUserId:@"guest" page:0 limit:10 onComplete:^(SpotlightResponseModel *response) {
}];
- List Article Around me
[Spotlight.instance spotlightArticleAroundMeWithLatitude:@"latitude cordinate" longitude:@"longitude cordinate" radius:@"10" withUserId:@"guest" page:0 limit:10 onComplete:^(SpotlightResponseModel *response) {
}];
- Detail Article
This function to get Detail article
[Spotlight.instance spotlightArticleDetailWithId:_article_id withUserId:@"guest" onComplete:^(SpotlightResponseModel *response) {
}];
- Share Article
This function to share article
[Spotlight.instance spotlightArticleShareWithArticleNo:article_no withUserId:@"guset" type:@"2" fromEmail:@"[email protected]" toEmail:@"[email protected]" message:@"test" onComplete:^(SpotlightResponseModel *response) {
}];
Live Streaming
- List Live Streaming with Channel
This function to get list live streaming
[Spotlight.instance spotlightLiveStreamingWithChannel:channelNo withUserId:@"guest" onComplete:^(SpotlightResponseModel *response) {
}];
- Share Live Streaming
This function to share live streaming
[Spotlight.instance spotlightLiveStreamingShareWithStreamingId:live_streaming_no userid:@"guest" shareType:@"2" fromEmail:@"[email protected]" toEmail:@"[email protected]" message:@"msg" onComplete:^(SpotlightResponseModel *response) {
}];
Reaction
- List Reaction on Article
This function to get list Reaction
[Spotlight.instance spotlightReactionListWithArticleId:article_no withUserId:@"guest" onComplete:^(SpotlightResponseModel *respon) {
}];
- Submit Reaction on Article
This function to submit Reaction
[Spotlight.instance spotlightReactionSubmitWithArticleId:article_no withReactionNo:@"2" withUserId:@"guest" onComplete:^(SpotlightResponseModel *response) {
}];
Story
- List Story without channel
This function to get list story without channel
[Spotlight.instance spotlightStoryListWithUserid:@"guest" page:0 limit:10 limitArticle:@"10" onComplete:^(SpotlightResponseModel *response) {
}];
- List Story with Channel
This function to get list story with channel
[Spotlight.instance spotlightStoryListWithChannel:channel_no withUserId:@"guest" page:0 limit:10 limitArticle:@"10" onComplete:^(SpotlightResponseModel *response) {
}];
- Detail Story
This function to get story detail
[Spotlight.instance spotlightStoryDetailWithStoryNo:_story_no withUserId:@"guest" limitArticle:10 onComplete:^(SpotlightResponseModel *response) {
}];
Author
iOS Codigo, [email protected]
License
Chips is available under the MIT license. See the LICENSE file for more info.