JavaScript プロパティ―がインスタンス毎に独立していない

CTest: {
var me = this;

CTest = function () {
me.val = ”;
}
var p = CTest.prototype;
p.setVal = function(pVal) {
me.val = pVal;
}
p.dispVal = function () {
console.log(‘dispVal ‘ + me.val);
}
}

var a = new CTest();
a.setVal(‘aa’);

var b = new CTest();
b.setVal(‘bb’);

a.dispVal();
b.dispVal();

実行結果は以下、同じ値になってしまう。
“dispVal bb”
“dispVal bb”

以下の感じで書けば大丈夫。

var CTest = function() {
// 非同期で呼ばれたメソッド内で this.xxxxx でアクセスできないので、 me を利用
var me = this;

me.val = ”;

me.setVal = function(pVal) {
me.val = pVal;
}
me.dispVal = function () {
console.log(‘dispVal ‘ + me.val);
}
}

var a = new CTest();
a.setVal(‘aa’);

var b = new CTest();
b.setVal(‘bb’);

実行結果は以下
“dispVal aa”
“dispVal bb”

スマホブラウザでfacebookのアプリを起動

href のリンク インテントを http:// ではなく fb:// にする。

ただ、これは、iOS ではうまくいくのだが、android だとうまくいかない。
何年か前に仕様が変わった?

<a href="#" onclick="clickFBApp()"><font size=80>LINK A</font></a>
<script>
    function clickFBApp() {
        if (
          navigator.userAgent.indexOf('iPhone') > 0
          || navigator.userAgent.indexOf('iPad') > 0
          || navigator.userAgent.indexOf('iPod') > 0
        )
        {
           document.location = "fb://profile/9999999999";
           var time = (new Date()).getTime();
           setTimeout(function(){
               var now = (new Date()).getTime();
               if((now-time) < 400) {
		    document.location = "https://itunes.apple.com/jp/app/facebook/id284882215?mt=8&uo=4";
               }
           }, 300);
        }
        else if(navigator.userAgent.indexOf('Android') > 0)
        {
        	document.location = "intent://page/9999999999#Intent;scheme=fb;package=com.facebook.katana;end";
//        	document.location = "intent://profile/9999999999#Intent;scheme=fb;package=com.facebook.katana;end";
        }
        else {
		document.location = "https://www.facebook.com/xxxxxxxx/";
        }
    };
</script>

参考:
https://www.tcmobile.jp/dev_blog/programming/url%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%A0%E3%81%8B%E3%82%89%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E8%B5%B7%E5%8B%95%E3%83%BB%E3%82%A2%E3%83%97%E3%83%AA%E3%81%8C%E7%84%A1%E3%81%91%E3%82%8C%E3%81%B0/
https://takeshiyako.blogspot.jp/2015/08/android-open-facebook-page.html

twitter intent

アプリ内で物販はクレジットカードを使う

https://qiita.com/takecian/items/11f3c02e74ad997001bf

In-App Purchaseを使用して、実物の商品やサービス、あるいは不適切なコンテンツを販売することは
できません。
● 実物の商品やサービス。In-App Purchaseを使用する場合は、デジタルの商品またはサービスをア
プリケーション内に配信する必要があります。アプリケーション内でユーザに実物の商品やサー
ビスを購入してもらうには、クレジットカードや支払いサービスなどの別の支払いメカニズムを
使用してください。
● 不適切なコンテンツ。In-App Purchaseを使用してApp Review Guidelineで許可されないコンテンツ
を販売しないでください。たとえばポルノグラフィやヘイトスピーチ、または誹謗中傷などで
す。

参考:https://developer.apple.com/jp/documentation/StoreKitGuide.pdf

無料のSSL証明書

chrome がSSL出ないと警告を表示する事などから
SSLは必須になりそう。
iOS 開発の通信も https だしね。

これからサーバーを立てる場合は無料でもSSLを使いたいので
Let’s Encrypt の使用を計画する

多くのOSに対応してそう。
https://letsencrypt.jp/docs/using.html

インストールも楽そう。

Eclipse で Android SDK が起動しない

Eclipse 起動時に以下のエラーがでる
failed to get the required adt version number from the sdk

android-sdk のファイルが壊れている可能性がある。

SDKツールをダウンロード
https://dl.google.com/android/repository/tools_r24.4.1-windows.zip

回答すると tools フォルダができる。

android sdkフォルダーの tools を上記と差し替え
C:\android\android-sdk
toolsディレクトリからandroid.batを実行し、必要なプラットフォームとビルド・ツールをダウンロード

Eclipse(Windows – >環境設定 – > Android、SDKの場所)のAndroid SDKディレクトリを新しいディレクトリに変更。
旧 android_sdk はリネームなどで安心できるまで保存しておく

縦横固定

画面が自動で回転してしまわないように
config.xml

<preference name="orientation" value="default">
↓
<preference name="orientation" value="portrait">
もしくは
<preference name="orientation" value="landscape">

DOM のアクセスが時々失敗する

jQuery も Onsen も ready 状態なのに~
document.getElementsByClassName でアクセスしても同じ。

基本に戻って、スクリプトの呼び出す位置を</body> の直前にすることで安定した。

============================================================
<script type=”text/javascript” src=”scripts/index.js”></script>
</body>
</html>
============================================================

cordova スプラッシュスクリーン cordova-plugin-splashscreen

cordova-plugin-splashscreen を組み込むことで Android でもスプラッシュウィンドウが簡単に表示できるはずが
実行時、エラーでアプリが落ちる。
調べたところ、
config.xml 内の
value に ピリオドが含まれていただけ。

Android の場合
以下のようなコードを削除することで、スプラッシュスクリーンを非表示にできる

<splash density="land-hdpi" src="res/screens/android/screen-hdpi-landscape.png" />