Cordova環境におけるIMQA SDKを適用する方法を提供します。
1. SDKのインストール
1. <PROJECT-NAME>.xcworkspaceファイルを開きます。
2. iosフォルダの下にframeworksというフォルダを作成します。
3. 下記のリンクから希望するバージョンのフレームワークをインストールしてXcode上に、frameworksフォルダにフレームワークファイルを移しながらCopy Items If neededをチェックします。
4. プロジェクト設定でFrameworks、Libraries、and Embedded ContentにおいてフレームワークをすべてEmbed & Signに設定します。
2. SDKの設定
1. AppDelegate.mファイルから以下の2つをインポートします。
#import <IMQAMPMAgent/IMQAMPMAgent.h>
#import <IMQACrashAgent/IMQACrash.h>
2. AppDelegate.mファイルで- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions関数の一番上に下記のコードを追加します。
NSString* PROJECT_KEY = @"<PROJECT_KEY>";
IMQACrashConfiguration* crashConfig = [[IMQACrashConfiguration alloc] initWithApiKey:PROJECT_KEY];
[IMQACrash startWithConfiguration:crashConfig];
IMQAConfig* mpmConfig = [[IMQAConfig alloc] init:PROJECT_KEY];
[[IMQAMpm sharedInstance] runWithConfig:mpmConfig];
3. ビルドの後に実行した時、下記のようなログが確認されたら正常にインストールが完了します。
[IMQACrash] [INFO] Sent session AC868F82-97E7-4DAA-A75B-E6E5CEB64F46
[IMQA] (1/4) Start tracking viewcontroller
[IMQA] (2/4) Start tracking network
[IMQA] (3/4) Start tracking resource
[IMQA] (4/4) Start tracking backtrace
[IMQA] (4/4) Complete setting IMQA MPM
[IMQA] IMQA MPM Version : <VERSION>
3. Cordovaの設定
1. HTMLの最上段にWebview Agentをインストールします。(インストールした後、ビルドは必須)
<!-- IMQA Webview Agent(1.1.3バージョン以下)です。 -->
<script type="text/javascript" src="https://imqawebviewagent.blob.core.windows.net/agent/webview-agent-1.1.2.js"
crossorigin></script>
// minファイルを適用したい場合
<script type="text/javascript" src="https://imqawebviewagent.blob.core.windows.net/agent/webview-agent-1.1.2.min.js"
crossorigin></script>
<!-- IMQA Webview Agent(1.1.3バージョン以上)です。 -->
<script type="text/javascript" src="https://cdn.imqa.io/agent/webview-agent-1.1.3.js"
crossorigin></script>
<script>
((w, c, _wv, _w, _wk, _mh, _b) => {
w[_wv](w); // WebViewエージェント実行関数
})(window, 'imqaClientConfig', 'IMQAWebviewMain', 'IMQAWebMain', 'webkit', 'messageHandlers', 'ImqaBridge')
</script>
2. XcodeにおいてCordovaLib/Private/Plugins/CDVWebViewEngine/CDVWebViewEngine.mファイルを探します。
3. CDVWebViewEngine.mの上にMPM SDKをインポートします。
#import <IMQAMPMAgent/IMQAMPMAgent.h>
4. - (void)pluginInitialize関数においてWKUserContentControllerを変更する部分を探して変更します。
// existing code
WKUserContentController* userContentController = [[WKUserContentController alloc] init];
[userContentController addScriptMessageHandler:weakScriptMessageHandler name:CDV_BRIDGE_NAME];
// additional code
[userContentController addScriptMessageHandler:self name:@"ImqaBridge"];
5. - (void)userContentController:(WKUserContentController*)userContentController didReceiveScriptMessage:(WKScriptMessage*)message関数を探して変更します。
***必ずその関数の一番上に追加してください。***
if([message.name isEqual: @"ImqaBridge"]) {
[[IMQAMpm sharedInstance] saveWebviewPostMessage:(CDVViewController*)self.viewController :message.body];
}