回答

8

在android中,您也可以触发通知,但不会显示为警告框。相反,它会显示在通知区域。这里是代码片段来在android中触发通知。

alarmTimeIntent = Ti.Android.createIntent({ 
       className: 'org.appcelerator.titanium.TiActivity', 
       packageName: 'package name here', 
       flags: Titanium.Android.FLAG_ACTIVITY_CLEAR_TOP | Titanium.Android.FLAG_ACTIVITY_SINGLE_TOP 
      }); 

      var alarmTimePendingIntent = Ti.Android.createPendingIntent({ 
       activity: Ti.Android.currentActivity, 
       intent: alarmTimeIntent, 
       type: Ti.Android.PENDING_INTENT_FOR_ACTIVITY, 
       flags: Titanium.Android.FLAG_CANCEL_CURRENT 
      }); 

      var alarmTimeNotification = Titanium.Android.createNotification({ 
       contentIntent: alarmTimePendingIntent, 
       contentTitle: 'Content Title Here', 
       tickerText: 'Ticker text here', 
       defaults:Titanium.Android.NotificationManager.DEFAULT_SOUND, 
       when: new Date() 
      }); 

      Ti.Android.NotificationManager.notify(1, alarmTimeNotification); 
+1

是否如果我关闭我的应用程序,它仍然工作?和我应该怎么用在这里(的packageName:“这里的包名”)。 –

+0

其实我写的COM *我的应用程序ID ,但我不认为它会起作用。它不会工作,我认为,但仍然只是写你的应用程序ID或任何与com。*。* ....相关的东西,而且它会工作,但你有使用后台服务。因为在Android中它不会像iphone那样自动启动。你必须手动启动。 –

+0

最后一行.notify将触发通知。 –

2

使用本Bahrenburg的Bencoding AlarmManager:https://github.com/benbahrenburg/benCoding.AlarmManager

该模块提供你所需要的。这非常简单 - 只需在计划Notification or Service时重复设置daily即可。

我张贴的代码来创建日用品的通知

app.js

//Import bencoding alarmmanager module into our Titanium App 
var alarmModule = require('bencoding.alarmmanager'); 
var alarmManager = alarmModule.createAlarmManager(); 

var isRunning = Ti.App.Properties.getBool("service_running", false);//get service running bool status 
if (isRunning) { 
    Ti.API.info('service is running'); 
} else { 
    Ti.API.info('service is not running'); 
    alarmManager.addAlarmService({ 
     service : 'com.mkamithkumar.whatstoday.DailyEventNotificatoinService',//your service name as in AndroidManifest.xml 
     hour : new Date().getHours(), 
     repeat : 'daily' 
    }); 
} 

dailyEventNotificatoin.js //通知报警服务文件

/* locate this file under: 
* - Resources/android/ 
* or 
* - app/assets/android/ (when working with Alloy) 
*/ 

var service = Ti.Android.currentService; 
var serviceIntent = service.getIntent(); 

setNotification(); 

Ti.Android.stopService(serviceIntent); 

function setNotification(alarm) { 
    var activity = Ti.Android.currentActivity; 
    var intent = Ti.Android.createIntent({ 
     action : Ti.Android.ACTION_MAIN, 
     className : 'com.mkamithkumar.whatstoday.WhatsTodayActivity', 
     flags : Ti.Android.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED | Ti.Android.FLAG_ACTIVITY_SINGLE_TOP 
    }); 
    intent.addCategory(Titanium.Android.CATEGORY_LAUNCHER); 

    var pending = Ti.Android.createPendingIntent({ 
     activity : activity, 
     intent : intent, 
     type : Ti.Android.PENDING_INTENT_FOR_ACTIVITY, 
     flags : Ti.Android.FLAG_ACTIVITY_NO_HISTORY 
    }); 

    //var message = "Time is up!"; 

    var notificationOptions = { 
     contentIntent : pending, 
     contentTitle : 'Whats Today - Featured Event', 
     contentText : 'Tap to see todays featured event', 
     tickerText : 'Whats Today Event Notification!', 
     //when : new Date().getTime(), 
     icon : Ti.App.Android.R.drawable.appicon, 
     flags : Titanium.Android.FLAG_AUTO_CANCEL | Titanium.Android.FLAG_SHOW_LIGHTS | Titanium.Android.FLAG_INSISTENT, 
     sound : Titanium.Android.NotificationManager.DEFAULT_SOUND 
    }; 

    var notification = Ti.Android.createNotification(notificationOptions); 
    Ti.Android.NotificationManager.notify(1, notification); 
    Ti.App.Properties.setBool("service_running", true); 

    Ti.Media.vibrate([0, 100, 100, 200, 100, 100, 200, 100, 100, 200]); 
} 

tiapp.xml

<android xmlns:android="http://schemas.android.com/apk/res/android"> 
     <tool-api-level>16</tool-api-level> 
     <manifest android:installLocation="auto" android:versionCode="1" android:versionName="1" package="com.mkamithkumar.whatstoday" xmlns:android="http://schemas.android.com/apk/res/android"> 
      <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="11"/> 
      <supports-screens android:anyDensity="true"/> 
      <application android:debuggable="false" android:icon="@drawable/appicon" android:label="Whats Today" android:name="WhatsTodayApplication" android:theme="@android:style/Theme.DeviceDefault.Light"> 

       <receiver android:name="bencoding.alarmmanager.AlarmNotificationListener"/> 
       <receiver android:name="bencoding.alarmmanager.AlarmServiceListener"/> 
       <activity android:configChanges="keyboardHidden|orientation|screenSize" 
       android:alwaysRetainTaskState="true" 
       android:label="Whats Today" 
       android:name=".WhatsTodayActivity" 
       android:theme="@style/Theme.Titanium" 
       android:launchMode="singleTop"> 
        <intent-filter> 
         <action android:name="android.intent.action.MAIN"/> 
         <category android:name="android.intent.category.LAUNCHER"/> 
        </intent-filter> 
       </activity> 
       <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="org.appcelerator.titanium.TiActivity"/> 
       <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="org.appcelerator.titanium.TiTranslucentActivity" android:theme="@android:style/Theme.Translucent"/> 
       <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="org.appcelerator.titanium.TiModalActivity" android:theme="@android:style/Theme.Translucent"/> 
       <activity android:configChanges="keyboardHidden|orientation|screenSize" android:name="ti.modules.titanium.ui.TiTabActivity"/> 
       <activity android:name="ti.modules.titanium.ui.android.TiPreferencesActivity"/> 
       <service android:exported="false" android:name="org.appcelerator.titanium.analytics.TiAnalyticsService"/> 

      </application> 
      <uses-permission android:name="android.permission.VIBRATE"/> 
      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 
      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
      <uses-permission android:name="android.permission.VIBRATE"/> 
      <uses-permission android:name="android.permission.WAKE_LOCK"/> 
      <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
      <uses-permission android:name="android.permission.INTERNET"/> 

     </manifest> 
     <services> 
      <service type="interval" url="dailyEventNotificatoin.js"/> 
     </services> 
    </android> 
+0

benCoding.AlarmManager是非常酷,但你可以打开你的应用程序点击通知?如果我必须需要这个功能呢? –