Firebase と Phonegap で少し遊んでみました (現在は Android のみで、Adobe のオンライン ビルド ツールを使用しています)。私は彼らのサイトから Firebase チャット サンプルを取得し、それをほぼ「そのまま」index.html ページに貼り付け、phonegap config.xml で必要とされるものをバンドルしました。Android モバイルで単一の index.html を使用してアプリを実行すると、100% 実行されます。index.html にリンクされた内部ページ (つまり、chat.html) に移動すると、受信チャットを受信できますが、送信されません。同じコードが index.html に表示されたときに機能するにもかかわらず、何かが正しく読み込まれていないようです。
私の推測では、それは私が述べた参照、それらの順序と場所に何らかの形で関連していると思います。
これが私のコードのスニペットです。必要に応じて、さらにいくつか述べることができます。
config.xml で:
<feature name="http://api.phonegap.com/1.0/device" />
<feature name="http://api.phonegap.com/1.0/notification"/>
<access origin="*" />
index.html で:
<script type="text/javascript" charset="utf-8" src="cordova-2.2.0.js"></script>
<script type="text/javascript" src="firebase.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript" src="my.js"></script>
<script type="text/javascript" src="https://ajax.aspnetcdn.com/ajax/jquery.mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
chat.html で、すべてのスクリプト タグにコメントを付けました (もちろん、すべてのスクリプト タグが存在する (コメントなし) でも試してみましたが、同じ結果が得られました)。
my.js (完全):
$(document).on("mobileinit", function () {
// Make your jQuery Mobile framework configuration changes here!
$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
});
$(document).ready(function () {
// Get a reference to the root of the chat data.
var messagesRef = new Firebase('https://alon.firebaseio.com/');
$('.send-action').click(function () {
var name;
if (navigator.platform == 'Win32') {
name = 'me';
} else {
name = device.name + ' (' + device.uuid + ')'; //$('#nameInput').val();
}
var text = $('#messageInput').val();
messagesRef.push({ name: name, text: text });
$('#messageInput').val('');
});
// Add a callback that is triggered for each chat message.
messagesRef.on('child_added', function (snapshot) {
var message = snapshot.val();
$('<div/>').text(message.text).prepend($('<em/>').text(message.name + ': ')).appendTo($('#messagesDiv'));
$('#messagesDiv')[0].scrollTop = $('#messagesDiv')[0].scrollHeight;
if (message.name != device.name + ' (' + device.uuid + ')') {
navigator.notification.beep(1);
}
});
});
ありがとう!