プッシュ通知機能が必要な煎茶タッチアプリケーションを開発しています。sencha docs によると、Android プッシュ通知をサポートしていないことがわかっています。私のプロジェクトをPhonegap 3.0と統合しようとしています。プッシュ通知には、このプラグインを使用しています https://github.com/hollyschinsky/PushNotificationSample30/
デモは正常に動作しており、登録 ID を取得しています。その登録 ID にプッシュ通知を送信できます。しかし問題は、私の sencha アプリをこのデモ プッシュ プラグインに統合しようとすると、登録 ID が取得されないことです。
私のindex.htmlはこのように見えます
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>crmapp</title>
<script id="microloader" type="text/javascript" src="touch/microloader/development.js"></script>
<script type="text/javascript" src="phonegap.js"></script>
<script type="text/javascript" src="PushNotification.js"></script>
<script type="text/javascript" src="js/index.js"></script>
</head>
<body>
<div id="appLoadingIndicator">
<div></div>
<div></div>
<div></div>
</div>
</body>
</html>
そして、私の app.js ファイルから js/index.js ファイルのプッシュ通知関数を呼び出しています。このように見えます
Ext.application({
name: 'WinReo',
requires: [
'Ext.MessageBox',
],
views: [
'Login',
// 'MainMenu',
'CrmFooter',
'CrmHead',
],
controllers:[
'Login',
'Main',
'Task',
],
models: [
'Event',
"Task"
],
stores: [
'Events',
'EventsDueListStore'
//'Contactsstore'
],
icon: {
'57': 'resources/icons/Icon.png',
'72': 'resources/icons/Icon~ipad.png',
'114': 'resources/icons/Icon@2x.png',
'144': 'resources/icons/Icon~ipad@2x.png'
},
isIconPrecomposed: true,
startupImage: {
'320x460': 'resources/startup/320x460.jpg',
'640x920': 'resources/startup/640x920.png',
'768x1004': 'resources/startup/768x1004.png',
'748x1024': 'resources/startup/748x1024.png',
'1536x2008': 'resources/startup/1536x2008.png',
'1496x2048': 'resources/startup/1496x2048.png'
},
launch: function() {
Ext.fly('appLoadingIndicator').destroy();
app.initialize(); // **Please see this line**
},
onUpdated: function() {
Ext.Msg.confirm(
"Application Update",
"This application has just successfully been updated to the latest version. Reload now?",
function(buttonId) {
if (buttonId === 'yes') {
window.location.reload();
}
}
);
}
});
ここに index.js ファイルがあります
var app = {
// Application Constructor
initialize: function() {
this.bindEvents();
},
// Bind Event Listeners
//
// Bind any events that are required on startup. Common events are:
// 'load', 'deviceready', 'offline', and 'online'.
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
},
// deviceready Event Handler
//
// The scope of 'this' is the event. In order to call the 'receivedEvent'
// function, we must explicity call 'app.receivedEvent(...);'
onDeviceReady: function() {
app.receivedEvent('deviceready');
var pushNotification = window.plugins.pushNotification;
pushNotification.register(app.successHandler, app.errorHandler,{"senderID":"675077458226","ecb":"app.onNotificationGCM"});
},
// Update DOM on a Received Event
receivedEvent: function(id) {
var parentElement = document.getElementById(id);
var listeningElement = parentElement.querySelector('.listening');
var receivedElement = parentElement.querySelector('.received');
listeningElement.setAttribute('style', 'display:none;');
receivedElement.setAttribute('style', 'display:block;');
console.log('Received Event: ' + id);
},
// result contains any message sent from the plugin call
successHandler: function(result) {
alert('Callback Success! Result = '+result)
},
errorHandler:function(error) {
alert(error);
},
onNotificationGCM: function(e) {
switch( e.event )
{
case 'registered':
if ( e.regid.length > 0 )
{
console.log("Regid " + e.regid);
alert('registration id = '+e.regid);
document.write(e.regid);
}
break;
case 'message':
// this is the actual push notification. its format depends on the data model from the push server
alert('message = '+e.message+' msgcnt = '+e.msgcnt);
break;
case 'error':
alert('GCM error = '+e.msg);
break;
default:
alert('An unknown GCM event has occurred');
break;
}
}
};
この関数を呼び出す方法がわかりません.その関数にまったくアクセスできず、登録IDを取得できません..正しい方向に私を導いてください..それはsencha touchからphonegap関数を呼び出す方法ですか? 問題が発生しました。この問題の解決を手伝ってください。ありがとう..