개인 계정으로 App Group을 사용하는 팀 개발
문제점
AppGroup은 iOS 8에서 애플리케이션 간에 데이터를 공유하는 메커니즘으로 가져옵니다.맞춤형 키보드와 애플워치 앱 등의 확장은 또 다른 앱이기 때문에 이런 앱을 개발할 때 실제로 앱 그룹을 활용하는 것은 없어서는 안 된다.(참조: http://www.toyship.org/archives/1845
AppGroup은 모든 개발자 계정의 데이터이며, 반드시 세계에서 유일한 이름을 가지고 있어야 한다.개인(Individual) 계정은 여러 사람이 공유할 수 없기 때문에 같은 앱 그룹을 사용할 수 없습니다.기업(Company/Organization) 계좌라면 앱 그룹을 공유할 수 있지만 취득하려면 법인이어야 한다.
이 때문에 불법인 단체(예를 들어 대학 동아리 등)는 앱 그룹을 사용하기 어렵다.
해결책
다음 지침에 따라 여러 사람이 개발할 수 있다.
절차.
단계는 Xcode6.3.2에 설명되어 있습니다.
Config.xcconfig 만들기
다음 내용의
Config.xcconfig
를 제작하여 프로젝트에 추가합니다.// 以下の行を開発者ごとに変更すること
APP_IDENTIFIER = org.example.mzp.some_app
GCC_PREPROCESSOR_DEFINITIONS = $(inherited) APP_IDENTIFIER=${APP_IDENTIFIER}
git 관리의 경우 다음과 같다.위의 내용은 Config입니다.xcconfig.example에 기술
개발자 clone 이후 얼마 지나지 않아, Config.Config.xcconfig.examlpe를 복원하기 위해 README 등에 기술하기
Config.xcconfig 추가
프로젝트 ->Info->Configuration에서 사용
Config.xcconfig
을 설정합니다.Info.plist의 변경 사항
각 대상
Info.plist
의 Bundle identifier 부분을 $(APP_IDENTIFIER)
로 대체합니다.목표의 종류에 따라 반드시 교체해야 하는 곳도 다르다.
AppGroup의 유효성
각 대상의 Capabilities에서 AppGroup을 활성화합니다.
또한 아래의 "+"버튼을 사용하여 App Group을 만들 수도 있습니다.
*.entitlements 변경 사항
추가
<アプリ名>.entilements
되었기 때문에group.$(APP_IDENTIFIER)
앱그룹명을 대체하였습니다.나팔목 클래스 생성하기
앱 내에서 앱그룹으로 처리하기 위해 스피커 클래스를 제작했다.CPP 매크로를 사용하려면 Objective-C여야 합니다.
Objectvie-C 때문에 Swift에서 사용할 때 Bridge Header를 적절하게 설정해야 합니다.
AppGroup.h
#import <Foundation/Foundation.h>
// AppGroupに関係する情報のラッパ。
//
// 個人アカウントを使っているため、ユーザに応じてAppGroup名を変える必要がある。
// AppGroup名はConfig.xcconfig内でCPPマクロとして定義されているため、Swiftからは読むことができない。
// そのためObjective-Cで記述する。
@interface AppGroup : NSObject
// AppGroup名
+ (NSString *)appGroupID;
// AppGroupで共有された領域のパスを取得
+ (NSString *)pathForResource:(NSString *)subpath;
// AppGroupで共有されたNSUserDefaultsを取得
+ (NSUserDefaults*)userDefaults;
@end
AppGroup.m
#import "AppGroup.h"
#define STR(x) @#x
#define STR2(x) STR(x)
static NSString * const kAppIdentifier = STR2(APP_IDENTIFIER);
@implementation AppGroup
+ (NSString *)appGroupID
{
return [NSString stringWithFormat:@"group.%@", kAppIdentifier];
}
+ (NSString *)pathForResource:(NSString *)subpath
{
NSString *containerPath = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:[self appGroupID]].path;
return [containerPath stringByAppendingPathComponent:subpath];
}
+ (NSUserDefaults*)userDefaults
{
return [[NSUserDefaults alloc] initWithSuiteName: [self appGroupID]];
}
@end
Reference
이 문제에 관하여(개인 계정으로 App Group을 사용하는 팀 개발), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mzp/items/b5a9dda2d01e18655cbf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)