美文网首页
iOS APNs推送,deepLink及联系

iOS APNs推送,deepLink及联系

作者: 落夏简叶 | 来源:发表于2019-11-14 14:54 被阅读0次

应用背景
1.通知:一般app收到一个通知消息,打开之后链接跳转到一个指定的网页。

  1. deepLink: 前端页面点击某个button传来一个deepLink,触发之后跳到指定页面。(如banner广告的点击事件)。

使用APNs 步骤

image.png
1. 向用户申请通知权限

iOS 8 - iOS 10

open func registerUserNotificationSettings(_ notificationSettings: UIUserNotificationSettings)

iOS 10以后

    open func requestAuthorization(options: UNAuthorizationOptions = [], completionHandler: @escaping (Bool, Error?) -> Void)
2. 注册通知
UIApplication.shared.registerForRemoteNotifications()
3. 注册完通知会走appDelegate的代理方法返回一个发送通知的唯一标识符。
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)newDeviceToken
{
     //把得到的newDeviceToken发送给后台服务器(例如我们用第三方的服务mixpanel)
    [AnalyticsManager setPushDeviceToken:newDeviceToken];    
}
4. 后台筛出要发送通知的人,将其newDeviceToken发送给APNs
5. APNs再发送给app。就可以看到类似这样的东西了
image.png
6. 点击通知后的回调,会返回一个response,response包含通知数据,取出数据进行解析,做相应的操作即可。
- (void)userNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler __IOS_AVAILABLE(10.0) __WATCHOS_AVAILABLE(3.0) __OSX_AVAILABLE(10.14) __TVOS_PROHIBITED;
remoteNotificationDict = [NSDictionary dictionaryWithDictionary:response.notification.request.content.userInfo];
7. 如果暂时不想要接收到通知可以unregisterForRemoteNotifications。(例如用户退出登录之后不想给未登录用户发送登录的通知)

Discussion
You should call this method in rare circumstances only, such as when a new version of the app removes support for all types of remote notifications. Users can temporarily prevent apps from receiving remote notifications through the Notifications section of the Settings app. Apps unregistered through this method can always re-register.

UIApplication.shared.unregisterForRemoteNotifications()

使用deepLink

1. 检测scheme是否可以被处理,客户端要想能打开这段URL,需要配置相应的URL Schemes。
[[UIApplication sharedApplication] canOpenURL:url]
image.png
2. 通过url开启应用
[[UIApplication sharedApplication] openURL:url]
3. 处理openURL逻辑
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey, id> *)options NS_AVAILABLE_IOS(9_0); 

deepLink 和 推送联系

推送可以附带一段数据,可以将数据中附带一段URL,然后就和deepLink一样了,只需要写一个方法处理URL即可。原理都是处理URL,解析URL,然后做相应的处理。

相关文章

网友评论

      本文标题:iOS APNs推送,deepLink及联系

      本文链接:https://www.haomeiwen.com/subject/nfdrictx.html