https://blog.csdn.net/macaopark/article/details/69053691
新建推送脚本:LocalReceive
import android.annotation.SuppressLint;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.AlarmManager;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.TaskStackBuilder;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
import com.unity3d.player.UnityPlayer;
public class LocalReceiver extends BroadcastReceiver
{
// private static Set channels = new HashSet();
private NotificationManager manager;
@Override
public void onReceive(Context context, Intent intent) {
// Toast.makeText(context, "开始工作了!!!", Toast.LENGTH_LONG).show();
//顶部通知
manager=(NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
//点击通知栏跳转
Intent playIntent = new Intent(context, UnityPlayerActivity.class);
//PendingIntent,和Intent类似,不同的是由于不是马上调用
PendingIntent pendingIntent = PendingIntent.getActivity(context, 1, playIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Notification.Builder builder = new Notification.Builder(context);
Resources res = context.getResources();
builder.setContentTitle("title").setContentText("提醒内容").setSmallIcon(R.drawable.ic_launcher).setDefaults(Notification.DEFAULT_ALL).setContentIntent(pendingIntent).setAutoCancel(true).setSubText("早点休息!");
int app_icon = res.getIdentifier("app_icon", "drawable", context.getPackageName());
builder.setSmallIcon(app_icon);
final Notification notify = builder.build();
manager.notify(1, builder.build());
}
public static void ClearShowingNotifications() {
Activity currentActivity = UnityPlayer.currentActivity;
@SuppressLint("WrongConstant") NotificationManager nm = (NotificationManager)currentActivity.getSystemService("notification");
nm.cancelAll();
}
}
UnityPlayerActivity中调用:
//先清空 本地推送内容
public void ClearShowing()
{
LocalReceiver.ClearShowingNotifications();
}
//android 推送功能
public void AndroidNotification()
{
//LocalReceiver.SetRepeatingNotification(id,delayMs,title,message,ticker,rep,sound,soundName,vibrate,lights,largeIconResource,smallIconResource,bgColor,bundle,channel,actions);
setReminder(true);
}
public void setReminder(boolean reminder)
{
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
PendingIntent pi = PendingIntent.getBroadcast(UnityPlayerActivity.this, 0, new Intent(this, LocalReceiver.class), 0);
if (reminder) {
//设置闹钟
Calendar instance = Calendar.getInstance();
instance.setTimeInMillis(System.currentTimeMillis());
instance.setTimeZone(TimeZone.getTimeZone("GET+8"));
instance.add(Calendar.SECOND, 5);//设置5秒
am.setRepeating(AlarmManager.RTC_WAKEUP, instance.getTimeInMillis(), 60000, pi);
// am.set(AlarmManager.RTC_WAKEUP, instance.getTimeInMillis(),pi);
}else {
am.cancel(pi);//关闭闹钟
}
}
回到Unity中:
void Awake ()
{
ClearNotifications();//android 清空推送
}
void Start ()
{
androidNotification();//android 推送
}
//android 推送
public void androidNotification()
{
//LocalNotification.SendRepeatingNotification(1, 5000, 5000, "一起捕鱼吧", "炮声一响,黄金万两", new Color32(0xff, 0x44, 0x44, 255));
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic("currentActivity");
jo.Call("AndroidNotification");
Debug.Log("android 通知功能=======");
}
//android 清空推送
public void ClearNotifications()
{
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic("currentActivity");
jo.Call("ClearShowing");
Debug.Log("android 清空通知功能=======");
}