浏览代码

[컨텐츠][New] facebook, instagram 은 딥링크 이용

hyodong.min 6 年之前
父节点
当前提交
9d8a347904

+ 24 - 4
app/src/main/java/kr/co/zumo/app/lifeplus/view/screen/contents/ContentsPresenter.java

@@ -1,5 +1,7 @@
 package kr.co.zumo.app.lifeplus.view.screen.contents;
 
+import android.content.Intent;
+import android.net.Uri;
 import android.os.Handler;
 import android.util.Log;
 import android.widget.Toast;
@@ -455,13 +457,20 @@ public class ContentsPresenter extends ContentsBasePresenter<ContentsModel, ICon
                 phoneNumber = "tel:" + phoneNumber;
                 view.setPhoneNumberInCall(phoneNumber);
                 break;
+              case Event.FACE_BOOK:
+                // deep linking
+                String url = event.getString();
+                String fbUrl = url.replace("https://", "http://").replace("http://", "fb://");
+                linkDeep(url, fbUrl);
+                break;
+              case Event.INSTAGRAM:
+                // deep linking
+                // http://instagram.com/_u/xxx
+                linkDeep(event.getString(), event.getString());
+                break;
               case Event.LINK:
                 /* falls through */
               case Event.HOME_PAGE:
-                /* falls through */
-              case Event.INSTAGRAM:
-                /* falls through */
-              case Event.FACE_BOOK:
                 shipToWeb(event.getString(), ScreenID.WEB_FROM_CONTENTS);
                 go(ScreenID.WEB_FROM_CONTENTS);
                 break;
@@ -491,6 +500,17 @@ public class ContentsPresenter extends ContentsBasePresenter<ContentsModel, ICon
     }
   }
 
+  private void linkDeep(String url, String deepUrl) {
+    try {
+      Intent intent = new Intent(Intent.ACTION_VIEW);
+      intent.setData(Uri.parse(deepUrl));
+      view.getActivity().startActivity(intent);
+    } catch (Exception e) {
+      shipToWeb(url, ScreenID.WEB_FROM_CONTENTS);
+      go(ScreenID.WEB_FROM_CONTENTS);
+    }
+  }
+
   private void shipToWeb(String webUrl, int screenId) {
     ContentsWebDeliveryBean contentsWebDeliveryBean = new ContentsWebDeliveryBean(model.getShareContents(), model.getSharePageIndex(), webUrl, screenId);
     model.setDeliveryPackaging(contentsWebDeliveryBean);

+ 29 - 0
app/src/test/java/kr/co/zumo/app/lifeplus/view/screen/contents/ContentsPresenterTest.java

@@ -0,0 +1,29 @@
+package kr.co.zumo.app.lifeplus.view.screen.contents;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * ContentsPresenterTest
+ * <pre>
+ * </pre>
+ *
+ * @author 민효동
+ * @version 1.0
+ * @history 민효동   [2019. 2. 21.]   [최초 작성]
+ * @since 2019. 2. 21.
+ */
+public class ContentsPresenterTest {
+
+  @Test
+  public void onEventInternal() {
+    String url = "http://instagram.com/xxx";
+
+    assertEquals("http://instagram.com/_u/xxx", url.replaceAll("(https?://[^/]+/)(.+)", "$1_u/$2"));
+
+    url = "https://instagram.com/xxx";
+
+    assertEquals("https://instagram.com/_u/xxx", url.replaceAll("(https?://[^/]+/)(.+)", "$1_u/$2"));
+  }
+}