質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.47%

  • Xcode

    4215questions

    Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

  • iOS

    4089questions

    iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

  • Objective-C

    1198questions

    Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

  • Google Analytics

    213questions

    Google AnalyticsはGoogleが開発した無料のウェブ分析のソリューションです。複数のクライアント側のAPIとデータをエクスポートし管理するREST APIも格納されています。

 iosアプリのアナリティクス導入について

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 1,147

hirahira10

score 53

iosアプリのアナリティクス導入について公式ページをみながらやってみたのですがどうもうまくいかずに困っています。
https://developers.google.com/analytics/devguides/collection/ios/v3/

エラーなどは出ていないのですが24時間たっても計測がはじまらない状態です(お知らせが下記のままです

ヒットがありません
プロパティ「⚪︎⚪︎⚪︎⚪︎」でヒットが発生していません。
確認待ち | 元に戻す | 詳細

)。

objective-Cの知識がほとんどないので
初心者が見落としやすい部分や気をつけてたほうがいいことなども
ご教授頂けると幸いです。
フレームワークや必要なファイルは全て揃っているとおもいます。




AppDelegate.m

#import "GAI.h"





  • (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {




    // Optional: automatically send uncaught exceptions to Google Analytics.
    [GAI sharedInstance].trackUncaughtExceptions = YES;
    
    // Optional: set Google Analytics dispatch interval to e.g. 20 seconds.
    [GAI sharedInstance].dispatchInterval = 20;
    
    // Optional: set Logger to VERBOSE for debug information.
    [[[GAI sharedInstance] logger] setLogLevel:kGAILogLevelVerbose];
    
    // Initialize tracker. Replace with your tracking ID.
    [[GAI sharedInstance] trackerWithTrackingId:@"トラッキングコード"];
    
}





TimelineViewController.m


#import "TimelineViewController.h"
#import "AppDelegate.h"
#import "GAITrackedViewController.h"


_________________________
-(void)viewDidAppear:(BOOL)animated
{
  
    [super viewWillAppear:animated];
    self.screenName = @"timeline";




}
_________________________
ご指摘いただき上記を下記に変更いたしました

-(void)viewWillAppear:(BOOL)animated   

   
    [super viewWillAppear:animated]; 
    self.screenName = @"timeline"; 
・ 
・ 
・ 





TimelineViewController.h

#import "GAITrackedViewController.h"


@interface TimelineViewController : GAITrackedViewController <UIWebViewDelegate, UISearchBarDelegate, UIAlertViewDelegate, UIScrollViewDelegate, EGORefreshTableHeaderDelegate>

{
・・・・・・・
}
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

こんにちは。

TimelineViewController.mで、レポートで使用するビューの名前を指定している箇所の最初の行ですが、

- (void)- (void)viewWillAppear:(BOOL)animated {:(BOOL)animated {

hikaruさんの記述では、「viewWillAppear」とすべきところを「viewDidAppear」としていますが、ここに記述した際だけのまちがいでしょうか。

アプリのエラーもなく、Google アナリティクスの公式ページを参照しながら導入しているのであれば、問題はないはずですが……

質問の内容から推測できる問題は上述したソースコード内の一部のまちがいだけだと思われます。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/28 11:56

    回答を書いているうちに、まさにおなじ箇所を指摘している回答が投稿されていたようです。
    投稿が削除できませんので、この回答は、無視してください。

    キャンセル

  • 2015/04/28 12:00

    GeorgeCohtaさん
    いつもご指導ありがとうございます。

    ご指摘いただいた箇所を編集致しましたがまだ計測がはじまらない状態です。
    ただいまiOS simulatarで確認をしているのですがこれからですと
    計測されないや、計測まで時間がかかるなどありますでしょうか?

    キャンセル

  • 2015/04/28 12:02

    Googleのアナウンスでは、「データは最大 72 時間ごとのデータ処理後にレポートに反映」するというようなこともいわれていますので、しばらくようすをみるべきかもしれません。

    キャンセル

  • 2015/04/28 19:17

    GeorgeCohtaさん
    再度コードを確認したところ
    -(void)viewWillAppear:(BOOL)animated
    {

    [super viewWillAppear:animated];
    self.screenName = @"timeline";



    }


    self.screenName = @"timeline"にエラーがはかれていました

    propety 'aaa' not found on object of type 'bbb'とありました
    調べてみると
    bbb型の aaa というプロパティ名の物が見つからない(プロパティ宣言に失敗している)とあったのですがヘッダーファイルで宣言をしろという意味でしょうか?

    object-cの知識が全くないため宣言の仕方がわからず困っています。
    他の宣言をみるに
    @property (retain, nonatomic) ImplementAPIBussiness *implementAPIBussiness;のような感じで書くのかなくらいです・・・

    キャンセル

  • 2015/04/28 20:34

    全体がみえていませんので、ただそれだけのエラーメッセージで、ヘッダファイルに宣言が必要かどうか判断できません。

    もしかしたら、記述のどこか別のところにクラスとインスタンスの区別ができていない箇所があるのかもしれません。ご承知とは思いますが、クラスはインスタンスの雛形であり、メモリ上にバッファされるのはインスタンスです。
    Objective-Cでは、通常、クラスをアッパーケースではじめ、インスタンスをローワーケースではじめることんいなっています。これは、クラスとインスタンスとを混同することをさけるためなのですが、そのあたりをもう一度さらってみる必要があるかもしれません。

    必要かどうかわかりませんが、宣言プロパティについては
    http://takatoshiono.com/blog/archives/448
    あたりが参考になるのではないかと思います。

    おまりお役に立てていないような気がしますが、現状でお伝えできるのはこのくらいです。
    あしからずご了承ください。

    キャンセル

  • 2015/04/28 20:54

    さしつかえなければ、もう少し詳細なソースコードと、吐き出したエラーメッセージとを提示したうえで、別の質問として新たに投稿したほうが回答が得やすいかもしれません。

    キャンセル

  • 2015/04/29 07:51

    考えられることとして、もうひとつ……

    screenNameに ViewControllerを識別するための文字列を指定するところでエラーを吐き出したということですので、

    self.screenName = [NSString stringWithFormat:@"%@", NSStringFromClass([self class])];

    と記述して、ViewControllerのクラス名を使用してみてはいかがでしょうか。
    こうしておくと、エラーも少なく、コードの使い回しができるのでおすすめです。

    キャンセル

  • 2015/04/29 08:02

    さらに、もうひとつ……

    試しに、TimelineViewController.hでは、GAITrackedViewControllerを継承した ViewControllerを用意する記述をすればいいはずですので、

    #import "GAITrackedViewController.h"

    @interface TimelineViewController : GAITrackedViewController

    @end

    としてみてください。

    たびたび失礼しました。

    キャンセル

  • 2015/05/01 10:17

    GeorgeCohtaさん
    お返事遅れてしまい申し訳ありません。
    GeorgeCohtaさんから頂いたご指導通りに変更したところ無事にエラーが解消されました!ありがとうございます!
    ただ
    linker command failed with exit code 1 (use -v to see invocation)
    という別のエラーがでてしまいまた詰まってしまったのでこちらは
    また別のページで質問してみたいとおもいます。
    いつも本当にありがとうございます

    キャンセル

  • 2015/05/01 10:36

    とりあえず、最初のエラーは解消されたということで、なによりです。

    さて、つづいてのエラー

    linker command failed with exit code 1 (use -v to see invocation)

    ですが。

    このエラーは、おなじ名前のクラスや変数、メソッドなどが使われている場合に発生することが多いようです。
    変数やメソッドの場合はコーディングの途中でアラートがでますので気づきますが、クラスの場合はビルドしたときにエラーを吐きますので、クラスかもしれません。

    また、~.hを importするべきところに ~.mを importしている場合にもおなじエラーが発生します。
    これは、importするところへ ~.mがコピーされ、おなじクラスが2回コンパイルの対象となってしまうためです。つまり、こちらもクラスの重複に由来するエラーということです。

    原因は、もしかしたら、このあたりかもしれません。

    キャンセル

  • 2015/05/01 10:53

    GeorgeCohtaさん
    ご指導ありがとうございました。
    おかげさまで本当に助かりました。

    今importしている部分を全て確認してみたのですが
    関係している3つのファイル(AppDelegate.m、TimelineViewController.h 、TimelineViewController.m)では全て.hのファイルをimportしており.mを呼び出している場所はありませんでした。

    キャンセル

+1

Google アナリティクスのレポートで使うビューの名前の指定を行っているメソッドが違うのではないのでしょうか?

-(void)viewDidAppear:(BOOL)animated   //viewDidAppearではないのではないか?
{ 
   
    [super viewWillAppear:animated]; 
    self.screenName = @"timeline"; 
・ 
・ 
・ 

} 
ではなく、
-(void)viewWillAppear:(BOOL)animated   //ここが違う
{ 
   
    [super viewWillAppear:animated]; 
    self.screenName = @"timeline"; 
・ 
・ 
・ 

} 
残念ながら私も詳しくは分からないので、完全に推測になります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/04/28 11:52

    ShunsukeIzuiさん
    ご指導ありがとうございます。

    完全に見落としてしまっていましたありがとうございます。

    しかしご指摘いただいた通り変更いたしましたが
    まだ計測はされていない状態です

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.47%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Xcode

    4215questions

    Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

  • iOS

    4089questions

    iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

  • Objective-C

    1198questions

    Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

  • Google Analytics

    213questions

    Google AnalyticsはGoogleが開発した無料のウェブ分析のソリューションです。複数のクライアント側のAPIとデータをエクスポートし管理するREST APIも格納されています。