risposta

8

In Android è anche possibile attivare la notifica ma non verrà visualizzata come casella di avviso. Invece verrà mostrato nell'area di notifica. Ecco lo snippet di codice per attivare la notifica in 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

se funzionerà anche se ho chiuso la mia domanda ?, e cosa devo usare qui (packageName: 'nome del pacchetto qui').. –

+0

com realtà ho scritto * * la mia app id , ma non penso che avrà effetto. Funzionerà anche senza quello, ma penso ancora solo di scrivere l'ID della tua app o qualsiasi cosa relativa a com. *. * .... E funzionerà ma hai un servizio di background. Perché in Android non si attiva automaticamente come fa iphone. devi sparare manualmente. –

+0

L'ultima riga. Notificare genererà notifiche di incendio. –

2

Usa Ben Bahrenburg Bencoding AlarmManager: https://github.com/benbahrenburg/benCoding.AlarmManager

Questo modulo fornisce quello che vi serve. È davvero facile: basta impostare ripetizione su daily quando sheduling un Notification or Service.

Vi metto il codice per creare la notifica quotidiana

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' 
    }); 
} 

file di dailyEventNotificatoin.js servizio di allarme // notifica

/* 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 è davvero interessante, ma puoi aprire la tua app facendo clic sulla notifica? Cosa succede se ho bisogno di questa funzione? –

Problemi correlati