Skip to content

Commit d059788

Browse files
authored
Merge pull request #151 from YAPP-Github/feature/#146-share-extension
Feature: Share Extension 구현
2 parents 3bc78c4 + 909e86c commit d059788

32 files changed

+618
-62
lines changed

Makefile

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,11 @@ download-privates:
5656
mkdir -p xcconfig; \
5757
cp Pokit_iOS_Private/xcconfig/Debug.xcconfig xcconfig/Debug.xcconfig; \
5858
cp Pokit_iOS_Private/xcconfig/Release.xcconfig xcconfig/Release.xcconfig; \
59+
cp Pokit_iOS_Private/xcconfig/Debug-Share.xcconfig xcconfig/Debug-Share.xcconfig; \
60+
cp Pokit_iOS_Private/xcconfig/Release-Share.xcconfig xcconfig/Release-Share.xcconfig; \
5961
cp Pokit_iOS_Private/auth/AuthKey.p8 Projects/CoreKit/Resources/AuthKey.p8; \
6062
cp Pokit_iOS_Private/GoogleService-Info.plist Projects/App/Resources/GoogleService-Info.plist; \
63+
cp Pokit_iOS_Private/GoogleService-Info.plist Projects/App/ShareExtension/Resources/GoogleService-Info.plist; \
6164
rm -rf Pokit_iOS_Private; \
6265
echo "✅ Debug.xcconfig와 Release.xcconfig 파일을 성공적으로 다운로드하고 Pokit_iOS_Private 폴더를 삭제했습니다."; \
6366
else \
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>ENABLE_TESTING_SEARCH_PATHS</key>
6+
<string>YES</string>
7+
</dict>
8+
</plist>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import ComposableArchitecture
2+
import XCTest
3+
4+
@testable import App
5+
6+
final class AppTests: XCTestCase {
7+
func test() {
8+
9+
}
10+
}

Projects/App/Project.swift

Lines changed: 71 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,36 +15,83 @@ let features: [TargetDependency] = Feature.allCases.map { feature in
1515
.project(target: "Feature\(feature.rawValue)", path: .relativeToRoot("Projects/Feature"))
1616
}
1717

18+
let shareExtensionTarget: Target = .target(
19+
name: "ShareExtension",
20+
destinations: .appDestinations,
21+
product: .appExtension,
22+
bundleId: "com.pokitmons.pokit.ShareExtension",
23+
deploymentTargets: .appMinimunTarget,
24+
infoPlist: .file(path: .relativeToRoot("Projects/App/ShareExtension/Info.plist")),
25+
sources: ["ShareExtension/Sources/**"],
26+
resources: ["ShareExtension/Resources/**"],
27+
entitlements: .file(path: .relativeToRoot("Projects/App/ShareExtension/ShareExtension.entitlements")),
28+
dependencies: [
29+
.project(target: "FeatureLogin", path: .relativeToRoot("Projects/Feature")),
30+
.project(target: "FeatureContentSetting", path: .relativeToRoot("Projects/Feature")),
31+
.project(target: "FeatureCategorySetting", path: .relativeToRoot("Projects/Feature"))
32+
],
33+
settings: .settings(
34+
base: [
35+
"OTHER_LDFLAGS": "$(inherited) -ObjC",
36+
"CODE_SIGN_STYLE": "Manual"
37+
],
38+
configurations: [
39+
.debug(name: "Debug", xcconfig: .relativeToRoot("xcconfig/Debug-Share.xcconfig")),
40+
.release(
41+
name: "Release",
42+
settings: ["CODE_SIGN_IDENTITY": "Apple Distribution"],
43+
xcconfig: .relativeToRoot("xcconfig/Release-Share.xcconfig")
44+
)
45+
]
46+
)
47+
)
48+
49+
let projectTarget: Target = .target(
50+
name: "App",
51+
destinations: .appDestinations,
52+
product: .app,
53+
bundleId: "com.pokitmons.pokit",
54+
deploymentTargets: .appMinimunTarget,
55+
infoPlist: .file(path: .relativeToRoot("Projects/App/Resources/Pokit-info.plist")),
56+
sources: ["Sources/**"],
57+
resources: ["Resources/**"],
58+
entitlements: .file(path: .relativeToRoot("Projects/App/Resources/Pokit-iOS.entitlements")),
59+
dependencies: features + [
60+
// TODO: 의존성 추가
61+
.external(name: "FirebaseMessaging"),
62+
.target(shareExtensionTarget)
63+
],
64+
settings: .settings(
65+
.release(
66+
name: "Release",
67+
settings: [
68+
"CODE_SIGN_IDENTITY": "Apple Distribution"
69+
],
70+
xcconfig: .relativeToRoot("xcconfig/Release.xcconfig")
71+
)
72+
)
73+
)
74+
75+
let appTestTarget: Target = .makeTarget(
76+
name: "AppTests",
77+
product: .unitTests,
78+
bundleName: "AppTests",
79+
infoPlist: .dictionary(["ENABLE_TESTING_SEARCH_PATHS": "YES"]),
80+
resources: ["AppTests/Resources/**"],
81+
dependencies: [
82+
.target(projectTarget)
83+
]
84+
)
85+
1886
let project = Project(
1987
name: "App",
2088
options: .options(
2189
defaultKnownRegions: ["en", "ko"],
2290
developmentRegion: "ko"
2391
),
2492
targets: [
25-
.target(
26-
name: "App",
27-
destinations: .appDestinations,
28-
product: .app,
29-
bundleId: "com.pokitmons.pokit",
30-
deploymentTargets: .appMinimunTarget,
31-
infoPlist: .file(path: .relativeToRoot("Projects/App/Resources/Pokit-info.plist")),
32-
sources: ["Sources/**"],
33-
resources: ["Resources/**"],
34-
entitlements: .file(path: .relativeToRoot("Projects/App/Resources/Pokit-iOS.entitlements")),
35-
dependencies: features + [
36-
// TODO: 의존성 추가
37-
.external(name: "FirebaseMessaging")
38-
],
39-
settings: .settings(
40-
.release(
41-
name: "Release",
42-
settings: [
43-
"CODE_SIGN_IDENTITY": "Apple Distribution"
44-
],
45-
xcconfig: .relativeToRoot("xcconfig/Release.xcconfig")
46-
)
47-
)
48-
)
93+
projectTarget,
94+
appTestTarget,
95+
shareExtensionTarget
4996
]
5097
)

Projects/App/Resources/Pokit-iOS.entitlements

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,13 @@
88
<array>
99
<string>Default</string>
1010
</array>
11+
<key>com.apple.security.application-groups</key>
12+
<array>
13+
<string>group.com.pokitmons.pokit</string>
14+
</array>
15+
<key>keychain-access-groups</key>
16+
<array>
17+
<string>$(AppIdentifierPrefix)group.com.pokitmons.pokit</string>
18+
</array>
1119
</dict>
1220
</plist>
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>TeamID</key>
6+
<string>$(TeamID)</string>
7+
<key>GIDClientID</key>
8+
<string>$(GIDClientID)</string>
9+
<key>AppleKeyID</key>
10+
<string>$(AppleKeyID)</string>
11+
<key>CFBundleURLTypes</key>
12+
<array>
13+
<dict>
14+
<key>CFBundleTypeRole</key>
15+
<string>Editor</string>
16+
<key>CFBundleURLSchemes</key>
17+
<array>
18+
<string>$(GIDClientID_reversed)</string>
19+
</array>
20+
</dict>
21+
</array>
22+
<key>CFBundleExecutable</key>
23+
<string>$(EXECUTABLE_NAME)</string>
24+
<key>CFBundleIdentifier</key>
25+
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
26+
<key>CFBundleVersion</key>
27+
<string>1</string>
28+
<key>CFBundleName</key>
29+
<string>Pokit</string>
30+
<key>CFBundleDisplayName</key>
31+
<string>Pokit</string>
32+
<key>NSExtension</key>
33+
<dict>
34+
<key>NSExtensionAttributes</key>
35+
<dict>
36+
<key>NSExtensionActivationRule</key>
37+
<string>TRUEPREDICATE</string>
38+
</dict>
39+
<key>NSExtensionPrincipalClass</key>
40+
<string>$(PRODUCT_MODULE_NAME).ShareViewController</string>
41+
<key>NSExtensionPointIdentifier</key>
42+
<string>com.apple.share-services</string>
43+
</dict>
44+
</dict>
45+
</plist>
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
//
2+
// Source.stencil.swift
3+
// Manifests
4+
//
5+
// Created by 김도형 on 6/16/24.
6+
//
7+
8+
import Foundation
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3+
<plist version="1.0">
4+
<dict>
5+
<key>com.apple.developer.applesignin</key>
6+
<array>
7+
<string>Default</string>
8+
</array>
9+
<key>com.apple.security.application-groups</key>
10+
<array>
11+
<string>group.com.pokitmons.pokit</string>
12+
</array>
13+
<key>keychain-access-groups</key>
14+
<array>
15+
<string>$(AppIdentifierPrefix)group.com.pokitmons.pokit</string>
16+
</array>
17+
</dict>
18+
</plist>
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="j1y-V4-xli">
3+
<dependencies>
4+
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
5+
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
6+
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
7+
</dependencies>
8+
<scenes>
9+
<!--Share View Controller-->
10+
<scene sceneID="ceB-am-kn3">
11+
<objects>
12+
<viewController id="j1y-V4-xli" customClass="ShareViewController" customModuleProvider="target" sceneMemberID="viewController">
13+
<view key="view" opaque="NO" contentMode="scaleToFill" id="wbc-yd-nQP">
14+
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
15+
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
16+
<color key="backgroundColor" red="0.0" green="0.0" blue="0.0" alpha="0.0" colorSpace="custom" customColorSpace="sRGB"/>
17+
<viewLayoutGuide key="safeArea" id="1Xd-am-t49"/>
18+
</view>
19+
</viewController>
20+
<placeholder placeholderIdentifier="IBFirstResponder" id="CEy-Cv-SGf" userLabel="First Responder" sceneMemberID="firstResponder"/>
21+
</objects>
22+
</scene>
23+
</scenes>
24+
</document>

0 commit comments

Comments
 (0)