Odpowiedz

8

W Androidzie można również wysyłać powiadomienia, ale nie będzie to wyświetlane jako okno alertu. Zamiast tego pojawi się w obszarze powiadomień. Oto fragment kodu służący do wysyłania powiadomień w systemie 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

czy to będzie działać, nawet jeśli Zamknęłam aplikację ?, a co powinno się używać tutaj (packageName: „nazwa pakietu tutaj”).. –

+0

faktycznie napisałem com * * mój app id , ale nie sądzę, że to zadziała. Będzie działał bez tego, ale myślę, że po prostu napiszę identyfikator aplikacji lub coś podobnego do com. *. * .... A tak, to zadziała, ale korzystasz z usługi w tle. Ponieważ w Androidzie nie uruchomi się automatycznie tak jak iPhone. musisz strzelać ręcznie. –

+0

Ostatni wiersz .notify spowoduje wysłanie powiadomienia. –

2

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

Moduł ten zapewnia to, czego potrzebujesz. To naprawdę proste - wystarczy ustawić powtarzanie na daily podczas planowania Notification or Service.

jestem delegowania kod tworzyć codzienne powiadomienia

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

plik dailyEventNotificatoin.js // powiadomienia serwisowego alarm

/* 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 jest naprawdę fajny, ale czy możesz otworzyć aplikację po kliknięciu powiadomienia? Co się stanie, jeśli będę potrzebować tej funkcji? –

Powiązane problemy