SDKを導入する (Expo)
Expoプラグインは Beta 版として提供中です
Expoプラグインは現在 Beta 版として提供しております。
そのため、今後予告なく仕様変更を伴う機能改善やAPIの破壊的変更が行われる可能性があります。またexpoではビジュアルトラッキング、設定値配信については動作未検証です。
Expoでの導入は、Managed WorkflowかBare Workflowかによって方法が異なります。
導入手順(Managed Workflow)
1. パッケージをインストールする
下記パッケージをインストールします。
npm install @react-native-karte/core
npm install @react-native-karte/notification
npm install @react-native-karte/in-app-messaging
npm install karte-expo-plugin
パッケージ導入に関する注意点
karte-expo-plugin
では@react-native-karte/core
@react-native-karte/in-app-messaging
@react-native-karte/notification
の導入が必須です。
2. React Native Firebase を導入する
npm install @react-native-firebase/app
npm install @react-native-firebase/messaging
導入に関しては、下記ドキュメントをご覧ください。
3. KARTE 設定ファイルをプロジェクトに追加する
iOS, Android それぞれの設定ファイルダウンロードします。
ダウンロード方法に関しては、下記ドキュメントをご覧ください。
ダウンロードしたファイルをプロジェクトのルートディレクトリに移動します。
4. app.json ファイルを編集する
app.json ファイルに、設定ファイルのパスを指定します。Firebaseプラグインの設定も追加します。
{
"expo": {
"plugins": [
[
"karte-expo-plugin",
{
"karteInfoPlist": "./Karte-Info.plist",
"karteXml": "./karte.xml"
}
],
"@react-native-firebase/app",
[
"expo-build-properties",
{
"ios": {
"useFrameworks": "static"
}
}
]
]
}
}
5. ネイティブコードを生成する
Expoのプラグインを追加した際はios/androidディレクトリを再生成する必要があるため以下のコマンドを実行します。
npx expo prebuild --clean
詳細については Expo のドキュメントをご覧ください。
実行環境について
ExpoプラグインはExpo Go環境では動作しません。
npx expo prebuild --clean
コマンド実行後、プラットフォームに合わせて以下のコマンドを実行するかXcode/AndroidStudioからネイティブ環境で実行してください。npx expo run:ios npx expo run:android
導入手順(Bare Workflow)
1. パッケージをインストールする
下記パッケージをインストールします。
npm install @react-native-karte/core
npm install @react-native-karte/notification
npm install @react-native-karte/in-app-messaging
2. React Native Firebase を導入する
npm install @react-native-firebase/app
npm install @react-native-firebase/messaging
導入に関しては、下記ドキュメントをご覧ください。
3. KARTE 設定ファイルをプロジェクトに追加する
iOS, Android それぞれの設定ファイルダウンロードします。
ダウンロード方法に関しては、下記ドキュメントをご覧ください。
ダウンロードしたファイルをiOSおよびAndroidのルートディレクトリに配置します。
4. Karteのセットアップを行う
現在ExpoをBare Workflowでセットアップする場合、 Module Import(@import KarteCore;)をAppDelegate.mmで行うと
Expoでビルドエラーが発生するという事象が確認されているため、以下の1または2、いずれかワークアラウンドを推奨しております。
※2024.10.22時点、expo:0.51系で確認
1.AppDelegate.mmの拡張子を.mに変更する
XCodeでAppDelegate.mmの拡張子を.mに変更するパターンです。
AppDelegate.mmをXCode上でAppDelegate.mとRenameした上で、
AppDelegate.mを https://developers.karte.io/docs/setup-react-native-sdk-v2#step3-sdk%E3%81%AE%E5%88%9D%E6%9C%9F%E5%8C%96%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%99%E3%82%8B
にそってセットアップします。
2.KarteHelperというobjective-cのクラスを作成する
iOSのプロジェクトファイルに、KarteHelperというObjective-cのクラスを作成した上で、
ヘッダーファイルをAppDelegate.mmでimportします。
// KarteHelper.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface KarteHelper : NSObject
+ (void)setup;
+ (BOOL) openUrl:(UIApplication *)app openURL:(NSURL *)url;
@end
NS_ASSUME_NONNULL_END
// KarteHelper.m
#import "KarteHelper.h"
@import KarteCore;
@implementation KarteHelper
+ (void)setup
{
[KRTApp setupWithConfiguration:[KRTConfiguration default]];
}
+ (BOOL)openUrl:(UIApplication *)app openURL:(NSURL *)url
{
return [KRTApp application:app openURL:url];
}
@end
// AppDelegate.mm
#import "KarteHelper.h"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
[KarteHelper setup];
...
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
return [KarteHelper openUrl:app openURL:url];
}
Updated 29 days ago