unity android本地推送,Unity安卓本地推送

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 清空通知功能=======");

}