我有一个苹果手表应用程序,它不是独立于iPhone的,我在手表上成功收到推送通知。
然而,点击推送通知总是会打开手表应用程序。我不想在手表应用程序中处理此问题。有办法做到这一点吗?有没有办法不打开手表应用程序?
我曾尝试在WKExtensionDelegate
中使用handleAction()
函数,但这些函数现在显然已被弃用,而且从未被解雇。
这可能是不可能的。它依赖于操作系统。
可能的原因是通知用户通常点击并打开应用程序。这可能也违反了苹果应用程序阻止应用程序打开的指导方针。
然而,您可以尝试这些:
这是一个带有通知的前台服务的示例。
public class UploadService extends IntentService{
private NotificationCompat.Builder mBuilder;
public UploadService() {
super("UploadService");
}
@Override
protected void onHandleIntent(Intent intent) {
Intent deleteIntent = new Intent(this, CancelUploadReceiver.class);
PendingIntent pendingIntentCancel = PendingIntent.getBroadcast(this, 0, deleteIntent, PendingIntent.FLAG_UPDATE_CURRENT);
//building the notification
mBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(android.R.drawable.ic_menu_upload)
.setContentTitle("Uploading Media...")
.setTicker("Starting uploads")
.addAction(android.R.drawable.ic_menu_close_clear_cancel, "Cancel Upload", pendingIntentCancel);
Intent notificationIntent = new Intent(this, MainActivity.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
mBuilder.setContentIntent(pendingIntent);
mBuilder.setProgress(100, 0, true);
startForeground(12345, mBuilder.build());
for(int i=0;i<10;i++){
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
您需要在清单文件中注册CancelUploadReceiver。
<receiver android:name=".CancelUploadReceiver"/>
当点击"取消上传"时,它将接收广播。然后我们可以简单地停止服务。
public class CancelUploadReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Intent service = new Intent();
service.setComponent(new ComponentName(context,UploadService.class));
context.stopService(service);
}
}
另一个选项可能是创建一个实现UINotificationContentExtension协议的自定义接口。
相关:
- 当用户按下通知横幅时,您可以禁用应用程序打开机制吗
- 如何在用户点击推送通知时禁用打开应用程序
- 不打开应用程序的iOS通知操作
- 在iOS中点击推送通知时,是否可以避免向用户显示应用程序
- 不打开应用程序的Android通知操作
- 带有操作的Andriod通知