Quick Implementation - React Native for iOS
You can integrate Stipop into your app in a minute by using Stipop iOS SDK.
Before you begin
Please make sure you completed all processes in Before You Begin - iOS
1. Create StipopModule and StipopEmitter
Create (StipopModule & StipopEmitter) and Implement functions using native Stipop iOS SDK.
StipopModule.swift
Swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
import Foundation
import Stipop
import React
@objc(StipopModule)
class StipopModule: NSObject {
static let stipopButton = SPUIButton(type: .system)
static let eventEmitter = RCTEventEmitter()
override init(){
super.init()
Stipop.initialize()
}
@objc(connect:)
func connect(_ userID: String) -> Void {
let user = SPUser(userID: userID)
StipopModule.stipopButton.setUser(user, viewType: .picker)
StipopModule.stipopButton.delegate = self
if let presentedViewController = RCTPresentedViewController() {
presentedViewController.view.addSubview(StipopModule.stipopButton)
}
}
@objc(show:isStipopShowing:callback:)
func show(_ isKeyboardVisible: Bool, isStipopShowing: Bool, callback: RCTResponseSenderBlock) -> Void{
StipopModule.stipopButton.sendActions(for: .touchUpInside)
var resultBool = false
if(isKeyboardVisible){
if(isStipopShowing){
resultBool = false
} else {
resultBool = true
}
} else {
resultBool = true
}
callback([NSNull(), resultBool])
}
@objc(remove)
func remove() -> Void {
if let presentedViewController = RCTPresentedViewController() {
StipopModule.stipopButton.endEditing(true)
presentedViewController.view.endEditing(true)
}
}
}
extension StipopModule: SPUIDelegate {
func onStickerSingleTapped(_ view: SPUIView, sticker: SPSticker) {
print("Stipop : onStickerSingleTapped")
var stickerDict = [String: Any]()
stickerDict["packageId"] = sticker.packageId
stickerDict["stickerId"] = sticker.stickerId
stickerDict["stickerImg"] = sticker.stickerImg
stickerDict["keyword"] = sticker.keyword
StipopEmitter.shared?.sendEvent(withName: "onStickerSingleTapped", body: stickerDict)
}
func onStickerDoubleTapped(_ view: SPUIView, sticker: SPSticker) {
print("Stipop : onStickerDoubleTapped")
var stickerDict = [String: Any]()
stickerDict["packageId"] = sticker.packageId
stickerDict["stickerId"] = sticker.stickerId
stickerDict["stickerImg"] = sticker.stickerImg
stickerDict["keyword"] = sticker.keyword
StipopEmitter.shared?.sendEvent(withName: "onStickerDoubleTapped", body: stickerDict)
}
}
StipopEmitter.swift
Swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import React
@objc(StipopEmitter)
class StipopEmitter: RCTEventEmitter {
public static var shared:StipopEmitter?
override init() {
super.init()
StipopEmitter.shared = self
}
override func supportedEvents() -> [String] {
var eventArr: [String] = []
eventArr.append("onStickerSingleTapped")
eventArr.append("onStickerDoubleTapped")
return eventArr
}
}
2. Create StipopModule.m
Create StipopModule.m and Export (StipopModule & StipopEmitter).
StipopModule.m
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#import <React/RCTBridgeModule.h>
#import <React/RCTEventEmitter.h>
@interface RCT_EXTERN_MODULE(StipopModule, NSObject)
RCT_EXTERN_METHOD(connect:(NSString *)userID)
RCT_EXTERN_METHOD(show
:(BOOL *)isKeyboardVisible
isStipopShowing:(BOOL *)isStipopShowing
callback:(RCTResponseSenderBlock)callback)
RCT_EXTERN_METHOD(remove)
- (dispatch_queue_t)methodQueue
{
return dispatch_get_main_queue();
}
+ (BOOL)requiresMainQueueSetup
{
return YES;
}
@end
@interface RCT_EXTERN_MODULE(StipopEmitter, RCTEventEmitter)
RCT_EXTERN_METHOD(supportedEvents)
- (dispatch_queue_t)methodQueue
{
return dispatch_get_main_queue();
}
+ (BOOL)requiresMainQueueSetup
{
return YES;
}
@end
Was this page helpful?
We’re here to help. Contact us.