Appcelerator Titanium LocalNotification для Android - PullRequest
5 голосов
/ 06 декабря 2011

Есть ли в Android какое-либо LocalNotification (что-то похожее на Titanium.App.iOS.scheduleLocalNotification )

Мне нужно несколько простых уведомлений (например, оповещений) для платформы Android, дажеесли моя заявка закрытаВозможно ли это в Титане?

Ответы [ 2 ]

8 голосов
/ 07 декабря 2011

В андроиде вы также можете запустить уведомление, но оно не будет отображаться как окно предупреждения.Вместо этого это будет показано в области уведомлений.Вот фрагмент кода для запуска уведомления в 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);
2 голосов
/ 16 августа 2013

Используйте BencodingBanager Alarm Benander: https://github.com/benbahrenburg/benCoding.AlarmManager

Этот модуль предоставляет то, что вам нужно. Это действительно легко - просто установите повтор на daily при планировании Notification or Service.

я отправляю код для создания ежедневного уведомления

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>
...