Circuitディープリンクサポーターとは

概要

Circuitディープリンクサポーター(以下、CDS)はディープリンクの実装をほぼコーディングを必要とすることなく実装するためのSDKと、そのSDKと連携しディープリンクの管理や他の機能との連携をしやすくするための管理画面から構成されます。

CDSでは、管理画面上からディープリンクに必要な情報を入力しCDSのSDKと、管理画面上から発行される数行のコードを埋め込むだけでアプリにディープリンクを実装できます。 詳しいシステムの構成についてはシステム概念図をご覧ください。

対応環境

CDSは以下の環境に対応しています。

iOS SDK対応開発環境

Xcode5、Xcode6、Xcode7 ネイティブ言語(Objective-C/Swift)による開発環境

iOS SDK対応OS

iOS7、iOS8、iOS9

Android SDK対応開発環境

Android Studio 1.0.0 以上

Eclipse(ADT Pluginは最新版を推奨)

Android SDK対応OS

Android2.3.3 APIs 以上、Android Support Library, revision 21.0.2

管理画面推奨環境OS

Windows7以上、MacOSX10.8以上

管理画面推奨環境ブラウザ

Chrome最新版、Firefox最新版、Safari最新版

mobiledeeplinking.orgとは

mobile.deep.linkingとはcriteo、flurry等の世界的なベンダーもコントリビューターとして参加しているディープリンクの標準化プロジェクトです。

URLスキームや、URIのルール決めのベスト・プラクティスや開発者向けのiOS、Androidのライブラリをオープンソースとして提供しています。


サービス設計

システム概念図

弊社が提供する管理画面にて、アプリ起動URI(ディープリンク)とアプリ内のアクションの紐付けを行う事により、アプリにディープリンクを追加することができます。
SDKを一度実装していただいた後は、Apple Inc.へのアプリ申請することなく、設定を変更することが可能です

1.管理画面上でディープリンク情報を設定

アプリデベロッパーが弊社より提供する管理画面にて、ディープリンクとアプリ内のアクション(viewControllerとの紐付け)設定を行います。

2.設定ファイルのアップロード

設定がなされると、設定ファイル(暗号化されたバイナリ)がアプリからアクセス可能なクラウド環境へアップロードされます。

3.ディープリンク経由でのアプリ起動

アプリ起動時に、クラウド上の設定ファイルをダウンロードし保存されます。設定されたアクションがSDKにより実行されます(画面遷移が行われます)。

SDKの主な挙動

設定ファイルについて

アプリ起動時(application:didFinishLaunchingWithOptions:)に、クラウド上の設定ファイルのダウンロードを行います。

この設定ファイルは暗号化されたまま、アプリ内に保存(NSUserDefaults)されます。
ファイルダウンロードは並列処理にて実行されるため、アプリ起動を妨げることはありません。30秒以内にダウンロードが完了できなかった場合は、ダウンロードは中断されます。
アプリ起動時に設定ファイルをダウンロードができなかった場合は、すでに保存されている設定ファイルを参照します。さらに設定ファイルがなかった場合は、通常のアプリ起動となります(画面遷移は行われません)。

画面遷移(viewControllerなどの呼び出し)

アプリ起動URI経由でアプリが起動した時(application:openURL:sourceApplication:annotation:)のみ、SDK内部にて設定ファイルの参照を行います。アプリ起動URIに対応した画面遷移(viewControllerの呼び出し)を行います。

ログの送信

アプリ起動URIによりアプリが起動した場合(application:openURL:sourceApplication:annotation:)、弊社サーバへアクセスログが送信されます。
今後提供予定のレポーティング機能などにアクセス状況などが閲覧できる予定です。


導入手順 (iOS)

アプリの初期設定

ディープリンクサポーターのトップページへアクセスし、iOSアプリを追加するをクリックします

初期設定で入力するデータ

初期設定として、アプリ全体に関わる情報を入力します。
ここで設定する項目はディープリンク設定ページのアプリ設定ボタンより初期設定完了後もいつでも変更可能です。

1.アプリ名

アプリ名を入力します。
基本的にはAppStore上の名前と統一することが推奨されますが、基本的に管理画面上で利用されるため必ずしも一致させる必要はありません。
(この設定によってアプリの挙動は変わりません。)

2.URLスキーム

アプリに設定されているURLスキームを入力してください。

3.対応端末

アプリが対応している端末を選択してください。

4.ストーリーボードについて

アプリの開発方法についての設定です。

1つのストーリーボードの場合

アプリ開発においてストーリーボードを1つしか利用していない場合、初期設定でストーリーボード名を指定しておくことで、後で設定する各ディープリンク設定時、ストーリーボード名を入力する必要がなくなります。

2つ以上のストーリーボードの場合

CDSでは2つ以上のストーリーボードを利用しているケースにも対応しています。
この設定はディープリンクを実装したい画面が2つ以上のストーリーボードにある場合に選択してください。
ストーリーボードを1画面ごとやストーリーごとに分割している場合などに便利です。
2つ以上の場合、ストーリーボード名は各ディープリンク設定時に入力するため初期設定では入力は必要ありません。

ストーリーボードを利用していない場合

ストーリーボードを利用していない場合はこのタブを選択してください。
この選択をした場合、各ディープリンク設定時にストーリーボード名を入力するフォームは表示されません。
アプリを開発する上で、ストーリーボードIDを利用してディープリンクを設定する必要がでてきた場合、アプリ設定にて再度設定を変更してください。

5.メモ(任意)

アプリ作成時にメモしておきたい内容を自由に入力できます。

初期設定完了

初期設定が完了すると、ディープリンク追加画面に遷移します。

アイコンの設定・変更、または初期設定で入力した設定を変更する場合、アプリ設定ボタンから再度設定画面を呼び出すことができます。

ディープリンクの設定

遷移方法の指定

CDSでは遷移方法を3つの方法で指定出来ます。
各遷移方法の詳細な挙動についてはこちらで詳しく説明しています。
今回は最もスタンダードであるストーリーボードIDで遷移先を指定します。
①の「ストーリーボードIDで遷移先を指定」をクリックします。

リンク名( 管理者用 )

管理者が識別しやすいようにディープリンクに対しての名前を設定します。

2.ディープリンク設定

初期設定で入力したURLスキームが設定されているため、URIを入力しディープリンクを設定します。
構造のルールはWebがある場合、基本的にWebと統一にすることを推奨します。
例:Webが  http://sample.com/abc/123 の場合
  アプリは      sample://abc/123

2.1. パラメータ指定

CDSではViewControllerにパラメータを渡したい場合、URI上のパラメータ部分を{ }で括ることで、任意のパラメータ名で値を渡すことが出来ます。
具体的なデータの渡し方の挙動についてはこちらをご参照ください。

3.ストーリーボードID

遷移させたいViewのストーリーボードIDを指定します。

4.詳細設定

詳細設定では、ディープリンクの基本設定に加え、細かい挙動を制御できます。
詳細設定をクリックすると、詳細設定用メニューが表示されます。

データの検証

2.1で指定したパラメータに対して正規表現でデータの検証(バリデート)することができます。 正規表現にマッチしないデータをパラメータとして取得した場合はアプリのトップに遷移します。
※正規表現は '/'なしで入力してください。

遷移前のアクション名

アプリが起動し、任意のビューに遷移する前(ViewControllerが呼び出される前)にログイン処理やAPIからのデータ取得等が必要な場合はあらかじめAppDelegateに任意の処理を記述し、それを遷移前に呼び出すことができます。 複数の処理を呼び出したい場合は、カンマ区切りでアクション名を入力すると、記述順にアクションが実行されます。

遷移先の戻るボタン設定

遷移先に戻るボタンを含むヘッダーの表示/非表示の切り替えができます。

メモ欄

メモ欄は、管理者がディープリンクに対してのメモを自由に入力できます。

バージョン設定

テストバージョンに指定する

ディープリンクの入力が完了したら'このバージョンをテストバージョンに指定する'をクリックして表示しているバージョンをテストバージョンとして反映します。

ステータス表示部分・テストバージョンに表示中のバージョン名が指定されているのを確認します。

表示中のバージョンと、テストバージョンに指定されているバージョンが同じことを確認したらページ最下部の'STEP2 SDK設定・テストへ'ボタンをクリックしてください。

SDKの設定

CocoaPodsでのインストール方法

CDSではCocoaPodsを利用してSDKをインストールできます。
手動でのインストール方法は次項の4.3.2をご参照ください。

CocoaPodsをインストールする

コンソール上でpod --versionを実行することでCocoaPodsがインストールされているか確認できます。

sudo gem install cocoapods

PodfileにCircuitを追加

Podfile
pod "Circuit"

pod installを実行

pod install

手動でのインストール方法

1. Circuit Deeplink SDKをダウンロードする

このリンクからSDKをダウンロードします。

2. プロジェクトにSDK/フレームワークを追加する

ダウンロードしたSDKをプロジェクトに追加します

3. 以下のiOS標準フレームワークを追加します

・AdSupport.framework

コードの埋め込み(Objective-C)

管理画面上に表示されているコードをコピーし、それぞれ指定されたファイルにコードを記述します

AppDelegate.m
#import <CircuitDeepLinking/CircuitDeepLink.h>
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
[[CircuitDeepLink sharedInstance] setDevelopmentMode:YES];
[[CircuitDeepLink sharedInstance] setAppId:@"SDK設定画面に表示されているID"];
...
[[CircuitDeepLink sharedInstance] registerHandlerWithName:@"管理画面上で登録したアクション名" handler:^void(NSDictionary *params) {
任意のコード
//パラメータ参照の仕方
for (NSString *param in params)
{
NSLog(@"%@: %@", param, [params objectForKey:param]);
}
}];
}
...
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
[[CircuitDeepLink sharedInstance] routeUsingUrl:url];
return YES;
}

ViewControllerにプロパティを追加する

設定したディープリンクにパラメータが設定した場合、ViewControllerにプロパティを追加します。

パラメータを設定したviewController.m
@property(nonatomic, strong) id 指定したパラメータ名;

ViewController内では下記のようにプロパティを参照します。

viewController.m
//fukurouIDというパラメータ名を設定した場合
self.fukurouID;

コードの埋め込み(Swift)

AppDelegate.swift
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
...
CircuitDeepLink.sharedInstance().setDevelopmentMode(true)
CircuitDeepLink.sharedInstance().setAppId(SDK設定画面に表示されているID)
...
CircuitDeepLink.sharedInstance().registerHandlerWithName("fukurouActionX", handler:{params in
//パラメータ参照の仕方
for (paramKey, paramValue) in params
{
println("\(paramKey):\(paramValue)")
}
})

return true
}
...
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool {
CircuitDeepLink.sharedInstance().routeUsingUrl(url);
return true
}

ViewControllerにプロパティを追加する

パラメータを設定したViewController
var 指定したパラメータ名: AnyObject?

ViewController内では下記のようにプロパティを参照します。

パラメータを設定したViewController
//fukurouIDというパラメータ名を設定した場合
fukurouID

ビルド

コードの埋め込みが終わったらビルドします。

動作確認

管理画面で設定したディープリンクが正常に作動するか、確認します。
すべてのディープリンクに対して、動作確認を行います。

公開バージョンを設定し、開発モードを解除する

動作に問題がなければSDK設定・テスト画面の'テストバージョンを公開バージョンに反映する'ボタンを押し、公開バージョンに反映します。

また、AppDelegate.mに設定した開発モード切り替え用コードを解除し公開モードに切り替えます。

Objective-Cの場合

AppDelegate.m
//以下のコードを削除
[[CircuitDeepLink sharedInstance] setDevelopmentMode:YES];

Swiftの場合

AppDelegate.swift
//以下のコードを削除
CircuitDeepLink.sharedInstance().setDevelopmentMode(true)

最終確認

管理画面で設定したディープリンクが正常に作動するか、確認します。
すべてのディープリンクに対して、動作が確認できたら実装は完了です。

アプリ申請時の注意事項

IDFAの設定

CDSではユーザーのアクセスログなどを取得するためにIDFA(Identification For Advertisers)を取得します。
IDFAを取得するアプリはアプリ申請時にiTunes Connect上でIDFAの取得設定をする必要があります。

この設定を外した場合、アプリをリジェクトされるリスクがありますのでアプリ申請時にはIDFAの設定画面で”YES”を選択してください。


5. 画面遷移の実装パターン(iOS)

3つの実装パターン

アプリ起動URIにより、任意の画面遷移を行う(ViewControllerを呼び出す)方法は3種類あります。

A. ストーリーボードIDで指定するパターン

B. class名でを指定するパターン

C. 任意のアクションを実行するパターン

A. Storyboard IDで指定するパターン

Storyboardのファイル名とStoryboard IDを指定することにより、遷移先画面のViewControllerを呼び出すパターンです。

アプリの初期設定画面

ディープリンク設定ページ

B. ViewController名で指定するパターン

Storyboardを使用しておらず、ViewControllerにStoryboard IDが振られていない場合に、class名でViewControllerを呼び出すパターンです。
管理画面上での設定に加え、AppDelegateにViewControllerをimportする記述が必要になります。

アプリの初期設定画面

ディープリンク設定ページ

C. 任意のメソッドを呼び出すパターン

ViewControllerを呼び出さずに、任意のアクションを実行するパターンです。
アクションは、AppDelegateに記述されているものを対象にコールできます。

ディープリンク設定ページ

Xcode AppDelegate.m

画面遷移前に任意のアクションを実行させたい場合は、
didFinishLaunchingWithOptions内に下記の様にアクションを記述します。
任意のアクションを指定した場合、SDK設定画面にコピー用サンプルコードが表示され

アプリ起動URIのパラメータのViewControllerへの受け渡しについて

アプリ起動URIに埋め込まれたパラメータは、ViewControllerの同名のプロパティに格納されます。
パラメータはフォーム上で{ }で囲むことでパラメータとして認識されます。
パラメータを受け渡す場合、ViewControllerに予めプロパティを用意しておく必要があります。

戻るボタンの挙動

戻るボタンからユーザーは一つ前に表示していた画面に戻る事ができます。一つ前に表示していた画面がない場合(アプリ起動時など)は、アプリ起動時に表示される画面へ戻ります。


開発モードについて(iOS)

開発モードとは

開発モードとは、テストバージョンに設定されているバージョンのアプリ・ディープリンク情報をCircuitSDKで
正常に取得できているか確認したり、デバッグログを出力し、より実装を円滑に進めるためのモードです。

上の図のように、開発モード時にはテストバージョンを読み込み、公開モード時には公開バージョンを読み込みます。

開発モードの切り替え方法

iOS版CircuitSDKにおける開発モードの切替方法を説明します。
以下のコードをAppDelegate.m内に記述し、ビルドすることで開発モードになりテストバージョンを読み込むようになります。

AppDelegate.m
...
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
...
[[CircuitDeepLink sharedInstance] setDevelopmentMode:YES];
...

デバッグログ一覧

開発モード時には、デフォルトでログ出力がONになり正常系ログ、エラーログがXcodeのコンソール上に出力されます。

ログタイプログ説明対応
正常ログconfig json is {設定ファイル}管理画面で設定したディープリンク情報がJSON形式で表示されます-
正常ログRouting to {class name}指定したclass名へルーティングしました-
正常ログRouting to {storyboardID}指定したStoryboard IDへルーティングしました-
エラーログUnable to set properties: {パラメータ名} on {クラス名}管理画面で設定したパラメータをプロパティにセットできない管理画面で設定したパラメータを遷移先で設定してください。設定ページの「ViewControllerにプロパティを追加する」をご参考ください。
エラーログRoute did not match: Validation for {パラメータ名} failed.バラメータが指定した正規表現にマッチングしない管理画面の「詳細設定」内の「データの検証」を設定しなおしてください。
エラーログNo Routes Match.管理画面で設定したディープリンクにマッチングしない管理画面の「ディープリンク設定」を設定しなおしてください。
エラーログNo View Controllers found in route options.管理画面で設定したViewControllerがアプリ内に存在しない管理画面の「ストーリーボードID」または「ViewController名」を設定しなおしてください。
エラーログconfig is nil, config json is nil設定ファイルの取得に失敗弊社までご連絡ください。
エラーログconnectionError: Error Domain=NSURLErrorDomain Code=-1009 ....オフラインで設定ファイルの取得に失敗オンライン上でテストをしてください。
エラーログconnectionError: Error Domain=NSURLErrorDomain Code=-1001 ....存在していないjsonファイルにアクセスしている指定しているアプリIDをご確認ください。

導入手順 (Android)

アプリの初期設定

ディープリンクサポーターのトップページへアクセスしAndroidアプリを追加するをクリックします

初期設定で入力するデータ

初期設定として、アプリ全体に関わる情報を入力します。
ここで設定する項目はディープリンク設定ページのアプリ設定ボタンより初期設定完了後もいつでも変更可能です。

1.アプリ名

アプリ名を入力します。
基本的にはGooglePlay上の名前と統一することが推奨されますが、基本的に管理画面上で利用されるため、必ずしも一致させる必要はありません。

2.URLスキーム

アプリに設定されているURLスキームを入力してください。

3.デフォルトルート名 (パッケージ名 + Activity名)

ディープリンク起動に失敗した場合、ここで設定したActivityに遷移します。

4.メモ(任意)

アプリ作成時にメモしておきたい内容を自由に入力できます。

初期設定完了

初期設定が完了すると、ディープリンク追加画面に遷移します。
アイコンの設定・変更、または初期設定で入力した設定を変更する場合、アプリ設定ボタンから再度設定画面を呼び出すことができます。

ディープリンクの設定

遷移方法の指定

CDSでは遷移方法を3つの方法で指定出来ます。
各遷移方法の詳細な挙動についてはこちらで詳しく説明していますのでそちらを確認してください。
今回はActivityで遷移先を指定します。
①の「Activityで遷移先を指定」をクリックします。

リンク名( 管理者用 )

管理者が識別しやすいようにディープリンクに対しての名前を設定します。

2.ディープリンク設定

初期設定で入力したURLスキームが設定されているため、URIを入力しディープリンクを設定します。
構造のルールはWebがある場合、基本的にWebと統一にすることを推奨します。
例:Webが  http://sample.com/abc/123 の場合
  アプリは      sample://abc/123

2.1. パスパラメータ指定

CDSではActivityに値を渡したい場合、URI上のパスパラメータ部分を{ }で括ることで、任意のパスパラメータ名で値を渡すことが出来ます。
具体的なデータの渡し方の挙動についてはこちらをご参照ください。

3.Activity名

起動したいActivity名を指定します。形式はパッケージ名+クラス名の形式で入力して下さい。

4.詳細設定

詳細設定では、ディープリンクの基本設定に加え細かい挙動を制御できます。
詳細設定をクリックすると詳細設定用メニューが表示されます。

データの検証

2.1で指定したパスパラメータに対して正規表現でデータの検証(バリデート)することができます。 正規表現にマッチしないデータを取得した場合は初期設定で指定したデフォルトルートに遷移します。
※正規表現は '/'なしで入力してください。

遷移前のアクション名
ディープリンクの起動前に実行したい処理を指定できます。あらかじめ、Handlerに処理の登録が必要です。(Handlerの登録方法詳細はこちら)
クエリパラメータ名
指定したクエリパラメータ名をキーとして、クエリパラメータが取得できます。(値の取得方法はこちら)
メモ欄

メモ欄は、管理者がディープリンクに対してのメモを自由に入力できます。

バージョン設定

テストバージョンに指定する

ディープリンクの入力が完了したら'このバージョンをテストバージョンに指定する'をクリックして表示しているバージョンをテストバージョンとして反映します。

ステータス表示部分・テストバージョンに表示中のバージョン名が指定されているのを確認します。

表示中のバージョンと、テストバージョンに指定されているバージョンが同じことを確認したらページ最下部の'STEP2 SDK設定・テストへ'ボタンをクリックしてください。

SDKの設定

Android Studioでのインストール方法

app/build.gradleに次のエントリーを追加します。

app/build.gradle
repositories {
maven {
url “http://products.cir.io/sdk/android/cds“
}
}

dependencies {
compile ‘io.cir:Circuit:1.1.0’
}

コードの埋め込み

管理画面上に表示されているコードを、AndroidManifest.xmlに追加します。

AndroidManifest.xml
<!-- INTERNETとACCESS_NETWORK_STATEを使用します -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<application>
<activity
android:name="io.cir.DeepLinkSupporterActivity"
android:theme="@android:style/Theme.NoDisplay"
android:noHistory="true">
<intent-filter>
<data android:scheme="アプリのURLスキーム"/>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>
</activity>
<!-- 広告IDの取得をGoogle Play Servicesで行います -->
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
<meta-data android:name="io.cir.DeepLinkSupporter.APP_ID"
android:value="アプリID"/>
</application>

Eclipseでのインストール方法

まず、New -> Android Application Projectで新規プロジェクトを作成します。

この時、Minimum Required SDKはAPI Level 10以上にしてください。DeepLinkSupporter SDKはAPI Level 10以上でのみ動作します。

プロジェクトを作成すると、appcompat_v7というプロジェクトも同時に作成されます。 お使いのEclipseプラグインのバージョンによってはエラーになっているので、このエラーを解決します。

appcompat_v7プロジェクトのプロパティを開きます。

左側のAndroidセクションを選び、Project Build TargetをAndroid 5.0.x以上にします。 これは、appcompat_v7プロジェクトがAndroid 5.0以上の設定を保持しているためです。

Project Build Targetを変更したら、一度appcompat_v7プロジェクトをcleanし、再ビルドします。 これでappcompat_v7プロジェクトのエラーが解消されます。

次に、アプリプロジェクトのプロパティを開きます。左側のAndroidセクションを選び、LibraryのAdd...をクリックします。 そして先ほどエラーを解消したappcompat_v7を選びます。DeepLinkSupporter SDKはappcompat_v7ライブラリを使用します。

次に、Google Play Servicesライブラリプロジェクトをimportします。

importを選んだら、AndroidセクションのExisting Android Code Into Workspaceを選びます。

Root Directoryの選択で、$ANDROID_HOME/extras/google/google_play_services/libproject/google-play-services_lib/ を選びます。

この後、Copy projects into workspaceにチェックをつけてFinishを選びます。

Google Play Servicesライブラリプロジェクトのimportが完了したら、アプリプロジェクトのプロパティを開き、 Google Play Servicesライブラリプロジェクトを追加します。これは、先ほどのappcompat_v7プロジェクトの追加と同じ手順です。

最新版のSDKファイルをこちらからダウンロードして、解凍します。

アプリプロジェクトのlibsフォルダに.jarファイルをコピーします。

AndroidManifest.xmlの設定などは、Android Studioと同様です。

Intentの扱いについて

本ライブラリが発行するIntentには、次のExtra項目が含まれます。

  • パスパラメータ
  • クエリパラメータ

例:ディープリンク設定に ”article/{id}"、クエリパラメータに "user" を指定しているときに
  DeepLinkが "myapp://article/1234?user=abcd" であった場合

String id = intent.getStringExtra("id"); // 1234が返される
String user = intent.getStringExtra("user"); // abcdが返される

Handlersの登録

Handlersに処理を登録し、ディープリンク起動前や登録した処理を直接呼び出すことができます。

登録には、registerHandlerメソッドを使用します。

例:sampleActionを登録する

public class DemoApplication extends Application {
@Override
public void onCreate() {
DeepLinkSupporterActivity.registerHandler("sampleAction", new Handler() {
// 登録したい処理
});
}
・・・

デバッグログ出力

開発時、logcatにSDKのログを出力することができます。

出力を有効にするには、setLogEnabledメソッドを使用します。デフォルトはログ出力がfalseです。

例:ログを有効にする

public class DemoApplication extends Application {
@Override
public void onCreate() {
DeepLinkSupporterActivity.setLogEnabled(true);
}
・・・

その他

ログのタグは「DeepLinkSupporter」です。logcatのFilterに指定できます。

ビルド

Androidアプリケーションを実行します。

動作確認

管理画面で設定したディープリンクが正常に作動するか、確認します。
すべてのディープリンクに対して、動作確認を行います。

公開バージョンを設定し、開発モードを解除する

動作に問題がなければSDK設定・テスト画面の'テストバージョンを公開バージョンに反映する'ボタンを押し、公開バージョンに反映します。

また、最後に開発モードから本番モードへの切り替えを行います。
開発モードが有効になっている場合、デバッグ用ログやディープリンクデータの読み込み先が本番とは異なります。
アプリストアに申請する際は開発モードを解除してビルドし、最終確認を行ってください。

Applicationクラス
//以下のコードを削除
DeepLinkSupporterActivity.setDevelopmentMode(true)

最終確認

管理画面で設定したディープリンクが正常に作動するか、確認します。
すべてのディープリンクに対して、動作が確認できたら実装は完了です。


5. 画面遷移の実装パターン(Android)

3つの実装パターン

アプリ起動URIにより、任意の画面遷移を行う(ViewControllerを呼び出す)方法は3種類あります。

A. Activityで遷移先を指定するパターン

B. 起動するServiceを指定するパターン

C. 任意のアクションを実行するパターン

A. Activityで遷移先を指定するパターン

パッケージ名+Activity名で指定した対象が起動できます。
対象のActivity起動前に、任意の処理をはさむことができます。
事前にHandlerへ登録した処理が指定できます。(詳細はこちら
また、クエリパラメータを渡すこともできます。(詳細はこちら

ディープリンク設定ページ

B. 起動するServiceを指定するパターン

パッケージ名+Service名で指定した対象が起動できます。
対象のService起動前に、任意の処理をはさむことができます。
事前にHandlerへ登録した処理が指定できます。(詳細はこちら
また、クエリパラメータを渡すこともできます。(詳細はこちら

ディープリンク設定ページ

C. 任意のメソッドを呼び出すパターン

任意の処理を呼び出すことができます。
事前にHandlerへ登録した処理が指定できます。(詳細はこちら

ディープリンク設定ページ


開発モードについて(Android)

開発モードとは

開発モードとは、テストバージョンに設定されているバージョンのアプリ・ディープリンク情報をCircuitSDKで
正常に取得できているか確認したり、デバッグログを出力し、より実装を円滑に進めるためのモードです。

上の図のように、開発モード時にはテストバージョンを読み込み、公開モード時には公開バージョンを読み込みます。

開発モードの切り替え方法

Android版SDKではApplicationクラスでDeepLinkSupporterActivity.setDevelopmentMode(true)を記述すると、開発モードに切り替えができます。

Applicationクラス
// 以下のコードを追加
DeepLinkSupporterActivity.setDevelopmentMode(true)

デバッグログ一覧

開発モード時には、デフォルトでログ出力がONになり正常系ログ、エラーログがXcodeのコンソール上に出力されます。

ログタイプログ説明対応
正常ログCircuit Response JSON ={設定ファイル}管理画面で設定したディープリンク情報がJSON形式で表示されます-
正常ログRouting to {class name}指定したclass名へルーティングしました-
エラーログActivity/Service Class not found管理画面で設定したActivityあるいはServiceがマッチングしない管理画面で設定したActivity名およびService名をご確認ください
エラーログHandler {Handler名} has not been registered with the Circuit library.管理画面で設定したHandlerがマッチングしない管理画面で設定したHandler名をご確認ください
エラーログFailed to get configrationCircuitのサーバからアプリの設定が取得できないAndroidManifestで設定したAPP_IDをご確認ください
エラーログP addr not foundIPアドレスが取得できない端末がネットに接続されていることをご確認ください
エラーログ-その他のエラーログ未知の問題、あるいはお客様アプリ固有の問題の可能性があります。 弊社までお問いあわせください。

バージョンとは

バージョンの概要

CDSではアプリ設定やディープリンク情報をまとめて一つのバージョンとして保存します。
公開しているバージョンのディープリンク情報を編集せずに、ディープリンク情報をアップデートしたい場合に独立した新しいバージョンを作成することで、設定したディープリンク情報を一度に編集することができます。

テストバージョン

テストバージョンとは、先に説明した通りテスト時にSDKのモードを開発モードにすることで取得することができるバージョンです。
公開バージョンと違いAmazon S3へ直接データをアップロードするため、管理画面上で変更したアプリ・ディープリンク情報をほぼリアルタイムで取得できます。
現在、指定されているテストバージョンはディープリンクサポータートップページ、ディープリンク設定ページにて確認できます。

公開バージョン

公開バージョンとは、SDKのモードが公開モードの時に取得することができるバージョンです。
管理画面上で入力したディープリンク情報をAmazon CloudFront経由で取得します。 CloudFrontの特性上、キャッシュのパージ(削除)に最大15分の遅延が発生するためテスト時には開発モードをONにしテストバージョンで開発することを推奨しています。
現在、指定されている公開バージョンはディープリンクサポータートップページ、ディープリンク設定ページにて確認できます。

新しいバージョンを作成する

新しいバージョンを作成する方法は、既存のバージョンをコピーする方法と新規に空のバージョンを作成する方法の2通りあります。
ディープリンク設定画面より、新しいバージョンを作成をクリックします。

バージョンをコピーして作成する場合は、左側のバージョンをコピーして作成のプルダウンメニューよりコピーしたいバージョンをクリックしてください。
新規に空のバージョンを作成したい場合は、右側の新規作成ボタンをクリックしてください。

バージョンを切り替える

表示・編集するバージョンを切り替えたい場合、バージョンの切り替えボタンをクリックします。

バージョンの一覧が表示されますので、表示・編集したいバージョンをクリックしてください。

バージョンを削除する

バージョンを削除したい場合はバージョン切り替えボタンをクリックした後、バージョンの一番右にあるゴミ箱のアイコンをクリックします。
※表示中のバージョン、テストバージョンに指定されているバージョン、公開バージョンに指定されているバージョンは削除できません。