我正在尝试实施一种解决方法,从Apple Watch应用程序中打开我的iPhone应用程序。
以下是通过通知执行此操作的用例:
Watch displays an available deal with a CTA button to see details on Phone
--------------------------
New rates options published!
check details on phone
<Button>
---------------------------
当用户选择手表上的按钮时,用户会收到本地通知 在配对手机上“查看新的费率选项”
在选择本地通知时,会启动应用程序以显示详细信息。
我的方法是:
**On watch:**
call *openParentApplication:reply:* ...this will open the iOS app in the background
**On app:**
In *application:handleWatchKitExtensionRequest:reply:*
...which is called on the iOS app when opened in background, trigger a local notification
**User:**
User picks the local notification to bring app to the foreground
这会有用吗?如果是这样,如何从后台运行的应用程序中立即触发本地通知?
最后一个问题:是否有(合法的)方法可以在不需要本地通知的情况下执行此操作(不会被应用商店拒绝)?
答案 0 :(得分:3)
批准的方法是使用Handoff而不是本地通知。使用Handoff,您可以使用WKInterfaceController
openParentApplication:reply:
方法指定手表上发生的当前活动。然后,当用户查看iPhone的锁定屏幕时,他们会在左下角看到应用程序的图标。从那里向上滑动将启动应用程序,Handoff活动将在启动时传递到应用程序,以便您可以根据需要进行深层链接。
为此目的使用本地通知可能有效,但它会有一些缺点。首先,它是笨拙的;切换在其方法中更为被动。其次,为了安排本地通知,用户必须同意接收它们;从用户的角度来看,这是出乎意料的行为。
另外,请记住,在watchOS 2中, DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
Bitmap bmap2 = BitmapFactory.decodeResource(getResources(), R.drawable.superman);
Bitmap bitmap = Bitmap.createScaledBitmap(bmap2, width, height, true);
WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext());
try {
wallpaperManager.setBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
方法不可用......真正的通信API取而代之。查看updateUserActivity:userInfo:webpageURL:
以获取更多信息,并查看WatchConnectivity框架。