Android device.platform正在给出;“未定义设备”;框架
Cordova版本:3.5.0 我正在尝试使用实现推送通知。但当我在android平台上运行这个应用程序时(我还没有尝试过其他平台),会出现一个错误“设备未定义” 我搜索了这个错误,发现了这些问题和错误 link1的解决方案对我不起作用 关于link2的解决方案,我将我的/android/res/xml/config.xml粘贴到这里:Android device.platform正在给出;“未定义设备”;框架,android,xml,cordova,Android,Xml,Cordova,Cordova版本:3.5.0 我正在尝试使用实现推送通知。但当我在android平台上运行这个应用程序时(我还没有尝试过其他平台),会出现一个错误“设备未定义” 我搜索了这个错误,发现了这些问题和错误 link1的解决方案对我不起作用 关于link2的解决方案,我将我的/android/res/xml/config.xml粘贴到这里: <?xml version='1.0' encoding='utf-8'?> <widget id="com.aubergine.r
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.aubergine.resqv1" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<preference name="loglevel" value="DEBUG" />
<preference name="AndroidLaunchMode" value="singleTop" />
<feature name="App">
<param name="android-package" value="org.apache.cordova.App" />
</feature>
<feature name="Device">
<param name="android-package" value="org.apache.cordova.device.Device" />
</feature>
<feature name="PushPlugin">
<param name="android-package" value="com.plugin.gcm.PushPlugin" />
</feature>
<name>resQ</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="dev@cordova.apache.org" href="http://cordova.io">
Apache Cordova Team
</author>
<content src="index.html" />
<access origin="*" />
</widget>
resQ
响应deviceready事件的Apache Cordova应用程序示例。
阿帕奇科尔多瓦团队
所以如果有人能帮上忙,那就太好了
以下是我的javascript(.js)代码:
var通知;
函数ondevicerady(){
$(“#应用程序状态ul”).append(“收到设备日常事件” ”);
文件.添加的文件列表器(“backbutton”,函数(e)
{
$(“#应用程序状态ul”).append(“接收到backbutton事件” ”);
如果($(“#home”).length>0)
{
//每次调用此以获取新令牌。不要调用它以重用现有令牌。
//取消注册(successHandler,errorHandler);
e、 预防默认值();
navigator.app.exitApp();
}
其他的
{
navigator.app.backHistory();
}
},假);
尝试
{
pushNotification=window.plugins.pushNotification;
$(“#应用程序状态ul”).append(“注册”+device.platform+” );
如果(device.platform=='android'| | device.platform=='android'||
device.platform==“amazon fireos”){
register(successHandler,errorHandler,{“senderID”:“788549744842”,“ecb”:“onNotification”});//必需!
}否则{
注册(tokenHandler,errorHandler,{“badge”:“true”,“sound”:“true”,“alert”:“true”,“ecb”:“onNotificationAPN”});//必需!
}
}
捕捉(错误)
{
txt=“此页面上有错误。\n\n”;
txt+=“错误描述:”+err.message+“\n\n”;
$(“#应用程序状态ul”).append(txt);
}
}
//处理iOS的APNS通知
通知APN(e)的功能{
如果(如警报){
$(“#应用程序状态ul”).append(“推送通知:”+e.alert+“ ”);
//显示警报还需要org.apache.cordova.dialogs插件
navigator.notification.$(“#应用程序状态ul”).append(e.alert);
}
如果(如声音){
//播放声音还需要org.apache.cordova.media插件
var snd=新媒体(如声音);
snd.play();
}
如果(如徽章){
pushNotification.setApplicationBadgeNumber(successHandler,e.badge);
}
}
//处理Android的GCM通知
通知功能(e){
$(“#应用程序状态ul”).append(“事件->接收:“+e.EVENT+” ”);
开关(如事件)
{
“已登记”案件:
如果(e.regid.length>0)
{
$(“#应用程序状态ul”)。附加(“已注册->REGID:”+e.REGID+“ ”);
//您的GCM推送服务器需要知道regID才能推送到此设备
//这里是您可能希望发送regID供以后使用的地方。
console.log(“regID=“+e.regID”);
$(“#应用程序状态ul”)。附加(e.regid);
}
打破
案例“信息”:
//如果设置了此标志,则此通知发生在我们在前台时。
//你可能想要播放一个声音来引起用户的注意,弹出一个对话框,等等。
如果(如前景)
{
$(“#应用程序状态ul”).append('--内联通知--'+' ');
//在Android上,soundname不在有效负载范围内。
//在Amazon FireOS上,所有自定义属性都包含在有效负载中
var soundfile=e.soundname | | e.payload.sound;
//如果通知包含声音名称,请播放它。
//播放声音还需要org.apache.cordova.media插件
var my_media=新媒体(“/android_资产/www/”+声音文件);
我的媒体播放();
}
其他的
{//否则,我们将启动,因为用户触摸了通知托盘中的通知。
如果(如coldstart)
$(“#应用程序状态ul”).append(“--COLDSTART通知--”+” );
其他的
$(“#应用程序状态ul”).append('--后台通知--'+' ');
}
$(“#应用程序状态ul”).append(“消息->消息:”+e.payload.MESSAGE+” );
//仅限android
$(“#应用程序状态ul”).append(“消息->MSGCNT:”+e.payload.MSGCNT+” );
//仅亚马逊fireos
$(“#应用程序状态ul”).append(“消息->时间戳:”+e.payload.TIMESTAMP+” );
打破
案例“错误”:
$(“#应用程序状态ul”).append(“错误->消息:”+e.MSG+“ ”);
打破
违约:
$(“#应用程序状态ul”).append(“事件->未知,收到了一个事件,我们不知道它是什么”);
打破
}
}
函数标记处理程序(结果){
$(“#应用程序状态ul”).append(“ 标记:“+result+” ”);
//您的iOS推送服务器需要知道令牌才能推送到此设备
//这里是您可能希望向其发送令牌以供以后使用的地方。
}
函数successHandler(结果){
$(“#应用程序状态ul”).append(“成功:“+result+” ”);
}
函数errorHandler(错误){
$(“#应用程序状态ul”).append(“错误:”+error+“ ”);
}
文件。添加的监听器('deviceready',onDeviceReady,false);
var pushNotification;
function onDeviceReady() {
$("#app-status-ul").append('<li>deviceready event received</li>');
document.addEventListener("backbutton", function(e)
{
$("#app-status-ul").append('<li>backbutton event received</li>');
if( $("#home").length > 0)
{
// call this to get a new token each time. don't call it to reuse existing token.
//pushNotification.unregister(successHandler, errorHandler);
e.preventDefault();
navigator.app.exitApp();
}
else
{
navigator.app.backHistory();
}
}, false);
try
{
pushNotification = window.plugins.pushNotification;
$("#app-status-ul").append('<li>registering ' + device.platform + '</li>');
if (device.platform == 'android' || device.platform == 'Android' ||
device.platform == 'amazon-fireos' ) {
pushNotification.register(successHandler, errorHandler, {"senderID":"788549744842","ecb":"onNotification"}); // required!
} else {
pushNotification.register(tokenHandler, errorHandler, {"badge":"true","sound":"true","alert":"true","ecb":"onNotificationAPN"}); // required!
}
}
catch(err)
{
txt="There was an error on this page.\n\n";
txt+="Error description: " + err.message + "\n\n";
$("#app-status-ul").append(txt);
}
}
// handle APNS notifications for iOS
function onNotificationAPN(e) {
if (e.alert) {
$("#app-status-ul").append('<li>push-notification: ' + e.alert + '</li>');
// showing an alert also requires the org.apache.cordova.dialogs plugin
navigator.notification.$("#app-status-ul").append(e.alert);
}
if (e.sound) {
// playing a sound also requires the org.apache.cordova.media plugin
var snd = new Media(e.sound);
snd.play();
}
if (e.badge) {
pushNotification.setApplicationIconBadgeNumber(successHandler, e.badge);
}
}
// handle GCM notifications for Android
function onNotification(e) {
$("#app-status-ul").append('<li>EVENT -> RECEIVED:' + e.event + '</li>');
switch( e.event )
{
case 'registered':
if ( e.regid.length > 0 )
{
$("#app-status-ul").append('<li>REGISTERED -> REGID:' + e.regid + "</li>");
// Your GCM push server needs to know the regID before it can push to this device
// here is where you might want to send it the regID for later use.
console.log("regID = " + e.regid);
$("#app-status-ul").append(e.regid);
}
break;
case 'message':
// if this flag is set, this notification happened while we were in the foreground.
// you might want to play a sound to get the user's attention, throw up a dialog, etc.
if (e.foreground)
{
$("#app-status-ul").append('<li>--INLINE NOTIFICATION--' + '</li>');
// on Android soundname is outside the payload.
// On Amazon FireOS all custom attributes are contained within payload
var soundfile = e.soundname || e.payload.sound;
// if the notification contains a soundname, play it.
// playing a sound also requires the org.apache.cordova.media plugin
var my_media = new Media("/android_asset/www/"+ soundfile);
my_media.play();
}
else
{ // otherwise we were launched because the user touched a notification in the notification tray.
if (e.coldstart)
$("#app-status-ul").append('<li>--COLDSTART NOTIFICATION--' + '</li>');
else
$("#app-status-ul").append('<li>--BACKGROUND NOTIFICATION--' + '</li>');
}
$("#app-status-ul").append('<li>MESSAGE -> MSG: ' + e.payload.message + '</li>');
//android only
$("#app-status-ul").append('<li>MESSAGE -> MSGCNT: ' + e.payload.msgcnt + '</li>');
//amazon-fireos only
$("#app-status-ul").append('<li>MESSAGE -> TIMESTAMP: ' + e.payload.timeStamp + '</li>');
break;
case 'error':
$("#app-status-ul").append('<li>ERROR -> MSG:' + e.msg + '</li>');
break;
default:
$("#app-status-ul").append('<li>EVENT -> Unknown, an event was received and we do not know what it is</li>');
break;
}
}
function tokenHandler (result) {
$("#app-status-ul").append('<li>token: '+ result +'</li>');
// Your iOS push server needs to know the token before it can push to this device
// here is where you might want to send it the token for later use.
}
function successHandler (result) {
$("#app-status-ul").append('<li>success:'+ result +'</li>');
}
function errorHandler (error) {
$("#app-status-ul").append('<li>error:'+ error +'</li>');
}
document.addEventListener('deviceready', onDeviceReady, false);
<head>
<script type="text/javascript" src="cordova.js"></script>
....