iOS14 Widget小组件开发实践3——Widget点击交互

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS14 Widget小组件开发实践3——Widget点击交互相关的知识,希望对你有一定的参考价值。

参考技术A

根据官方文档的描述,点击 Widget 窗口唤起 APP 进行交互指定跳转支持两种方式:

Widget 支持三种显示方式,分别是 systemSmall 、 systemMedium 、 systemLarge ,其中:
1、 systemSmall 只能用 widgetURL 修饰符实现URL传递接收。

2、 systemMedium 、 systemLarge 可以用 Link 或者 widgetUrl 处理

这两种方式的本质都是 URL Schemes
在查找资料的时候,看到网上有的地方说在 AppDelegate 实现 OpenUrl 进行跳转处理:

然而试了之后发现根本没有响应,其实是需要在 SceneDelegate 里面实现跳转处理,因为 ios13 后, APP 的 UI 生命周期交由 SceneDelegate 管理,这里拿到需要的 URL ,就能处理产品需求实现了。

creating-a-widget-extension
https://swiftrocks.com
iOS13 URL Schemes 跳转与传值问题

Android开发工程师文集-1 小时学会Widget小组件开发

前言

大家好,给大家带来Android开发工程师文集-1 小时学会Widget小组件开发的概述,希望你们喜欢

学会用Widget (小组件)

Widget小组件很方便,很快捷,可以个性化,自己定制,相关功能,可以实时更新最新内容。

  • Widget布局,Widget配置,AppWidgetProvider与Configuration Activity
  • Android Widget
  • xml布局类型:AppWidget Provider
<appwidget-provider 
 xmlns:android="http://schemas.android.com/apk/res/android"
 //引用的布局文件
 android:initialLayout="@layout/widget"
 android:minHeight="50dp"
 android:minWidth="100dp"
 //设置更新时间
 android:updatePerioMillis="66666666">
</appwidget-provide>
public class WidgetProvider extends AppWidgetProvider {
 @Override
 public void onDeleted(Context context,int[] appWidgetIds){
  super.onDeleted(context,appWidgetIds);
}
 @Override
 public void onDisabled(Context context){
  super.onDisabled(context);
 }
 @Override
 public void onEnabled(Context context){
  super.onEnabled(context);
  }
 @Override
 public void onReceive(Context context,Intent intent){
  super.onReceive(context,intent);
  }
 @Override
 public void onUpdate(Context context,AppWidgetManager appWidgetManager,int[] appWidgetIds){
 super.onUpdate(context,appWidgetManager,appWidgetIds);
}
}
//TimerService extends Service
Timer timer=new Timer();
timer.shedule(new TimerTask(){
 @Override
 public void run(){
   updateTime();
 }
 },0,1000);
}
//onDestroy
public void onDestroy(){
 super.onDestroy();
 timer=null;
}
//updateTime();
private void updateTime(){
 String time = simpletime.format(new Date());
}

Widget就是个桌面小组件,有了Widget,我们可以直接在桌面上进行各种操作。

Widget使用

  • AndroidManifest中声明AppWidget
  • xml中定义AppWidget配置文件
  • layout中定义Widget布局文件
  • 创建类继承AppWidgetProvider类
//清单文件中
<meta-data
   android:name="android.appwidget.provider"
   android:resource="@layout/widget_setting"/>
//onUpdate()重点
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
 super.onUpdate(context, appWidgetManager, appWidgetIds);
 RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.layout_widget);
 //Intent intent = new Intent();
 Intent intent = new Intent();
 intent.setClass(context, TestWidget.class); 
 intent.setAction(WIDGET_BTN_ACTION);
 PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
 remoteViews.setOnClickPendingIntent(R.id.widget_btn, pendingIntent);
 appWidgetManager.updateAppWidget(appWidgetIds, remoteViews); 
} 
//清单文件
 <intent-filter>      
   <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />      
   </intent-filter>      
   <meta-data android:name="android.appwidget.provider"      
      android:resource="@xml/widget_provider"/>      

总结

  • 本文讲了Android开发工程师文集-1 小时学会Widget小组件开发,如果您还有更好地理解,欢迎沟通
  • 定位:分享 Android&Java知识点,有兴趣可以继续关注

以上是关于iOS14 Widget小组件开发实践3——Widget点击交互的主要内容,如果未能解决你的问题,请参考以下文章

iOS14 Widget小组件开发(Widget Extension)

iOS 14 小部件中的动画

iOS Widget小组件大小和位置(透明组件)

iOS Widget小组件大小和位置(透明组件)

iOS Widget小组件大小和位置(透明组件)

iOS Widget 小组件打开其他APP✨仿TopWidget快捷启动✨ 附常用URL schemes