2014年3月1日土曜日

リワード広告の仕組み(1)

唐突に、社でリワード広告システムを作ることになりその勉強をしていました。

仕組み自体は最初全く知らなかったため、「つらいにゃん...つらいにゃん..」とか言いながら苦闘していたのですが・・・結果的にいろいろと理解できて、勉強になったためここにまとめたいと思います。


 そもそも、リワード広告システムとはなにか。
ここで登場するのはユーザ・広告掲載社・広告提供社の三役です。 掲載社をA社・提供社をB社とします。 僕が関わったのはBの立場からです。 

リワード広告システムとは、近年増えてきた所謂ポイントアプリ・お小遣い稼ぎアプリなどで多く利用されているシステムです。
A社のポイントアプリAにおいて、ユーザがB社の出しているアプリBの広告をクリック・それをダウンロード後起動するとアプリAでポイントが貯まる、といった仕組みになります。
最終的にアプリAで貯まったポイントはAmazonやらiTunesのギフト券に換金できる、と。

アプリAを出している会社にしてみれば広告料をもらえるし、B社にしてみれば自社アプリの宣伝になるし、ユーザにしてみればアプリをダウンロードだけでお金に変わるポイントが手に入るし...と一見みんな幸せに見れるような仕組みになっています。



 こっからがシステムの話。 そのときどんな動きをしているのか

ユーザがアプリAの広告をクリックした際にA社からは管理用(キックバック用)のidが付与されます。つまりB社のCGIプログラムにGETでidが送られます。http://B社のページ?id=xxxという感じですね。
idは後で成果報酬を返すための値で、クリックしたユーザの端末情報などではないです。
そのidを受け取った上でB社はユーザをアプリBのDLページ(今回はGooglePlay)へ誘導します。ユーザがアプリBをダウンロード・起動したらその成果をA社に返すことになります。
つまり,広告をクリックしたユーザとアプリBをDLしたユーザが一緒かどうか判別して、確かに同じユーザだと特定できたら成果をA社に返せればいいわけです。

はぁ

最初聞いて疑問に思ったのはユーザの認証方法。
ユーザNが広告をクリックするとA社からid=nnnが送られてくるのですが、Nがアプリをダウンロード、起動した後でそのアプリを起動したユーザがid=nnnのユーザと同一だと認証するにはどうすれば良いのか。だってid一連の流れの中でずっと保持できないし。
解決方法として真っ先に思い浮かんだのは端末の固有情報を利用すること。Androidでは端末からそこそこ情報を抜き取れるのでそれと照らし合せられないかなーと思ったのです。
【参考:TechBooster Androidのシステム情報を取得する】
ただ、サーバ側にidを持ってアクセスしてきた時点での端末情報の取得が難しいようで。ガラケーだったらアクセス情報からキャリア・端末情報を抜き取ることができたみたいなんですけど、スマホから取れたのはAndroidのバージョンくらいでした。これじゃ判別はできない。
そもそも、端末の固有情報を抜き取るのは個人情報保護法の観点からもよろしくないようです。(そりゃそーだ)
iOSではそういった端末情報を取得することができないように規制をかけてるみたいですね。

「じゃあユーザ特定できないじゃん、無理じゃん。無理ゲーじゃん。」なんて悲しみに沈みながら尚ネットの海を泳いでたら、とある記事が目にとまりました。
【アフィリエイト広告業界におけるシステム間の連携ってなんだろう(仕組み編)】
・・・これならでき、そう?

ということでブラウザのセッションを利用するという方向で調べていくと、なんかできそう。
具体的には、
(1)ユーザが広告をクリックしてB社へ転送された時にセッションIDを発行し
(2)ユーザがアプリをダウンロード、起動した後にブラウザを起動させ、セッションIDで認証

という方式をとればうまくいけそうです。上手くいかせなければいけないのです。

ということで次の投稿でクッキーとセッションの話、PHPを使ってどのように実装するか、を簡単に書いていきます。








0 件のコメント:

コメントを投稿