{"id":137976,"date":"2023-04-24T00:00:00","date_gmt":"2023-04-24T00:00:00","guid":{"rendered":"https:\/\/adapty.io\/blog\/react-native-in-app-purchases-implementation-tutorial-2\/"},"modified":"2023-04-24T00:00:00","modified_gmt":"2023-04-24T00:00:00","slug":"react-native-in-app-purchases-implementation-tutorial","status":"publish","type":"post","link":"https:\/\/adapty.io\/zh\/blog\/react-native-in-app-purchases-implementation-tutorial\/","title":{"rendered":"React Native\u5e94\u7528\u5185\u8d2d\u4e70\uff1a\u7b80\u5355\u7684\u5b9e\u73b0\u3002\u6559\u7a0b"},"content":{"rendered":"\n
\u8de8\u5e73\u53f0\u5e94\u7528\uff08APP\uff09\u5f00\u53d1\u6846\u67b6\u65e0\u7591\u8ba9\u5f00\u53d1\u4eba\u5458\u7684\u751f\u6d3b\u66f4\u8f7b\u677e\uff0c\u56e0\u4e3a\u4ed6\u4eec\u53ef\u4ee5\u540c\u65f6\u4e3a\u591a\u4e2a\u5e73\u53f0\u5f00\u53d1\u5e94\u7528\u4e86\u3002\u4e0d\u8fc7\uff0c\u4e5f\u6709\u4e00\u4e9b\u7f3a\u70b9\u3002\u4f8b\u5982\uff0cReact Native\u6ca1\u6709\u73b0\u6210\u7684\u5de5\u5177\u6765\u5b9e\u73b0\u5e94\u7528\u5185\u8d2d\u4e70\uff08in-app purchase\uff09\u3002\u56e0\u6b64\uff0c\u60a8\u5c06\u4e0d\u53ef\u907f\u514d\u5730\u8f6c\u5411\u7b2c\u4e09\u65b9\u5e93\u3002 <\/p>\n\n\n\n
React Native\u5e94\u7528\u4e2d\u6d41\u884c\u7684\u5e94\u7528\u5185\u8ba2\u9605\uff08in-app subscription\uff09\u5e93\u662freact-native-iap\u548cexpo-in-app-purchases\u3002\u4e0d\u8fc7\uff0c\u6211\u8981\u8ba8\u8bba\u7684\u662freact-native-adapty<\/a>\uff0c\u56e0\u4e3a\u4e0e\u5176\u4ed6\u5e93\u76f8\u6bd4\uff0c\u5b83\u6709\u5f88\u591a\u597d\u5904\uff1a<\/p>\n\n\n\n Adapty\u8f6f\u4ef6\u5f00\u53d1\u5de5\u5177\u5305\uff08SDK\uff09\u7684\u529f\u80fd\u8fdc\u4e0d\u6b62\u8fd9\u4e9b\u3002\u60a8\u53ef\u4ee5\u83b7\u5f97\u9488\u5bf9\u6240\u6709\u5173\u952e\u6307\u6807\u7684\u5185\u7f6e\u5206\u6790\u5de5\u5177\uff1a\u7fa4\u7ec4\u5206\u6790\uff08cohort analysis\uff09\u3001\u57fa\u4e8e\u670d\u52a1\u5668\u7684\u8d2d\u4e70\u9a8c\u8bc1\u3001\u4ed8\u8d39\u5899\uff08paywall\uff09\u7684AB\u6d4b\u8bd5\uff08AB testing\uff09\u3001\u5177\u6709\u7075\u6d3b\u7ec6\u5206\u7684\u4fc3\u9500\u6d3b\u52a8\u3001\u7b2c\u4e09\u65b9\u5206\u6790\u5de5\u5177\u96c6\u6210\u7b49\u7b49\u3002<\/p>\n\n\n\n \u73b0\u5728\uff0c\u8ba9\u6211\u4eec\u8c08\u8c08\u5982\u4f55\u5728React Native\u5e94\u7528\u4e2d\u8bbe\u7f6e\u5e94\u7528\u5185\u8d2d\u4e70\u3002\u8fd9\u662f\u6211\u4eec\u4eca\u5929\u8981\u8bb2\u7684\u5185\u5bb9\uff1a<\/p>\n\n\n\n \u5728\u672c\u6307\u5357\u4e2d\uff0c\u6211\u4eec\u5c06\u5c1d\u8bd5\u6784\u5efa\u4e00\u4e2a\u5e94\u7528\u7a0b\u5e8f\uff0c\u5411\u8ba2\u9605\u7528\u6237\u663e\u793a\u732b\u7684\u56fe\u7247\uff0c\u5e76\u5411\u5176\u4ed6\u4eba\u63d0\u793a\u8ba2\u9605\u4f18\u60e0\u3002 <\/p>\n\n\n\n\n\n \u957f\u8bdd\u77ed\u8bf4\uff1a<\/em>Expo\u7684\u201c\u7ba1\u7406\u578b<\/em><\/a>\u201d\u4e0d\u652f\u6301\u5e94\u7528\u5546\u5e97\u63d0\u4f9b\u7684\u672c\u5730\uff08native\uff09\u8d2d\u4e70\u5904\u7406\u65b9\u6cd5\uff08\u4e5f\u79f0\u4e3a\u5546\u5e97\u5de5\u5177\u5305\uff09\u3002\u60a8\u8981\u4e48\u575a\u6301\u4f7f\u7528\u7eafRN\uff0c\u8981\u4e48\u4f7f\u7528Expo\u88f8\u5de5\u4f5c\u6d41\u3002<\/em><\/p>\n\n\n\n \u9a6c\u4e0a\uff0c\u6211\u5c06\u4e0d\u5f97\u4e0d\u8ba9\u90a3\u4e9b\u60f3\u4f7f\u7528Expo\u7684\u4eba\u5931\u671b\u4e86\uff1a\u8fd9\u884c\u4e0d\u901a\u3002Expo\u662f\u4e00\u4e2aReact Native\u6846\u67b6\uff0c\u5b83\u8ba9\u5e94\u7528\u7a0b\u5e8f\u5f00\u53d1\u53d8\u5f97\u66f4\u5bb9\u6613\u3002\u4e0d\u8fc7\uff0c\u4ed6\u4eec\u7684\u7ba1\u7406\u5de5\u4f5c\u6d41\u4e0e\u8d2d\u4e70\/\u8ba2\u9605\u5904\u7406\u5e76\u4e0d\u517c\u5bb9\u3002Expo\u5728\u5176\u65b9\u6cd5\u548c\u7ec4\u4ef6\u4e2d\u90fd\u6ca1\u6709\u4f7f\u7528\u4efb\u4f55\u672c\u5730\u4ee3\u7801\uff08\u4e24\u8005\u90fd\u53ea\u9488\u5bf9JS\uff09\uff0c\u800c\u8fd9\u662f\u5546\u5e97\u5de5\u5177\u5305\u6240\u5fc5\u9700\u7684\u3002\u6211\u4eec\u65e0\u6cd5\u5728\u624b\u673a\u5546\u5e97\u4e2d\u4f7f\u7528JavaScript\u5b9e\u73b0\u5e94\u7528\u5185\u8d2d\u4e70\uff0c\u6240\u4ee5\u60a8\u53ea\u80fd\u201c\u9000\u51fa\u201d\u3002<\/p>\n\n\n\n \u9996\u5148\uff0c\u60a8\u9700\u8981\u8bbe\u7f6e\u5e94\u7528\u5546\u5e97\u8d26\u6237\uff0c\u4ee5\u53ca\u521b\u5efa\u548c\u914d\u7f6eiOS\u548c\u5b89\u5353\u7684\u8d2d\u4e70\u548c\u8ba2\u9605\u3002\u8fd9\u5e94\u8be5\u4e0d\u4f1a\u8d85\u8fc720\u5206\u949f\u3002<\/p>\n\n\n\n \u5982\u679c\u60a8\u8fd8\u6ca1\u6709\u5728App Store Connect\u548c\/\u6216Google Play Console\u4e2d\u914d\u7f6e\u60a8\u7684\u5f00\u53d1\u8005\u8d26\u6237\u548c\u4ea7\u54c1\uff0c\u53ef\u4ee5\u53c2\u9605\u4ee5\u4e0b\u6307\u5357\uff1a<\/p>\n\n\n\n \u5bf9\u4e8ereact-native-adapty\uff0c\u60a8\u9996\u5148\u9700\u8981\u914d\u7f6e\u60a8\u7684Adapty\u6307\u793a\u677f\u3002\u8fd9\u4e0d\u4f1a\u82b1\u8d39\u592a\u591a\u65f6\u95f4\uff0c\u4f46\u4f1a\u8ba9\u60a8\u83b7\u5f97\u4e0a\u9762\u5217\u51fa\u7684Adapty\u76f8\u5bf9\u4e8e\u786c\u7f16\u7801\u7684\u6240\u6709\u4f18\u52bf\u3002<\/p>\n\n\n\n \u7b2c\u4e09\u6b65\uff0c\u60a8\u5c06\u6536\u5230\u5173\u4e8e\u82f9\u679c\u5e94\u7528\u5546\u5e97\u548cGoogle Play\u7684\u914d\u7f6e\u63d0\u793a\u3002<\/p>\n\n\n\n \u5bf9\u4e8eiOS\uff0c\u60a8\u9700\u8981\uff1a<\/p>\n\n\n\n \u8fd9\u4e9b\u9879\u662f\u8d2d\u4e70\u6709\u6548\u6240\u5fc5\u9700\u7684\u3002 <\/p>\n\n\n\n \u6bcf\u4e00\u9879\u90fd\u6709\u4e00\u4e2a\u201c\u5982\u4f55\u9605\u8bfb\u201d\u7684\u63d0\u793a\uff0c\u5176\u4e2d\u5305\u542b\u4e86\u4e00\u6b65\u4e00\u6b65\u7684\u64cd\u4f5c\u6307\u5357\u3002\u5982\u679c\u60a8\u6709\u4efb\u4f55\u95ee\u9898\uff0c\u53ef\u4ee5\u770b\u770b\u8fd9\u4e9b\u3002<\/p>\n\n\n\n Bundle ID\u662f\u5e94\u7528\u7684\u552f\u4e00ID\u3002\u5b83\u5fc5\u987b\u5339\u914d\u60a8\u5728Targets > [App Name] > General<\/em>\u7684Xcode\u4e2d\u6240\u6307\u5b9a\u7684\uff1a<\/p>\n\n\n\n \u5bf9\u4e8eAndroid\uff0c\u5fc5\u9700\u7684\u9879\u662f\u5305\u540d\u548c\u670d\u52a1\u8d26\u6237\u5bc6\u94a5\u6587\u4ef6\u3002\u6240\u6709\u8fd9\u4e9b\u9879\u4e5f\u90fd\u6709\u81ea\u5df1\u7684\u201c\u5982\u4f55\u9605\u8bfb\u201d\u63d0\u793a\u3002\u5305\u540d\u5728\u5b89\u5353\u4e2d\u7684\u4f5c\u7528\u5c31\u50cfBundle ID\u5728iOS\u4e2d\u7684\u4f5c\u7528\u4e00\u6837\u3002\u5b83\u5fc5\u987b\u5339\u914d\u60a8\u5728\u4ee3\u7801\u4e2d\u6240\u6307\u5b9a\u7684\uff0c\u53ef\u4ee5\u5728android.defaultConfig.applicationId\u7684\/android\/app\/build.gradle\u6587\u4ef6\u4e2d\u627e\u5230\u3002<\/p>\n\n\n\n \u7b2c\u56db\u6b65\uff0c\u63d0\u793a\u60a8\u5c06Adapty\u8f6f\u4ef6\u5f00\u53d1\u5de5\u5177\u5305\u8fde\u63a5\u5230\u60a8\u7684\u5e94\u7528\u7a0b\u5e8f\u3002\u4e0d\u8fc7\uff0c\u73b0\u5728\u5148\u8df3\u8fc7\u8fd9\u4e00\u6b65\u2014\u2014\u6211\u4eec\u7a0d\u540e\u4f1a\u8fd4\u56de\u8fd9\u4e00\u6b65\u3002<\/p>\n\n\n\n \u6ce8\u518c\u540e\uff0c\u67e5\u770b\u8bbe\u7f6e\u9009\u9879\u5361\uff0c\u5e76\u8bb0\u4f4f\u5728\u8fd9\u91cc\u53ef\u4ee5\u627e\u5230\u516c\u5171\u8f6f\u4ef6\u5f00\u53d1\u5de5\u5177\u5305\u5bc6\u94a5\u3002\u60a8\u4ee5\u540e\u4f1a\u9700\u8981\u8fd9\u4e2a\u5bc6\u94a5\u3002<\/p>\n\n\n\n Adapty\u4f7f\u7528\u9002\u7528\u4e8e\u4e0d\u540c\u8ba2\u9605\u7684\u4ea7\u54c1\u3002\u60a8\u7684\u732b\u7684\u7167\u7247\u8ba2\u9605\u53ef\u4ee5\u662f\u6bcf\u5468\u4e00\u6b21\u3001\u6bcf\u534a\u5e74\u4e00\u6b21\uff0c\u6216\u8005\u6bcf\u5e74\u4e00\u6b21\u3002\u8fd9\u4e9b\u9009\u9879\u4e2d\u7684\u6bcf\u4e00\u4e2a\u90fd\u5c06\u662f\u4e00\u4e2a\u5355\u72ec\u7684Adapty\u4ea7\u54c1\u3002<\/p>\n\n\n\n \u8ba9\u6211\u4eec\u5728\u6307\u793a\u677f\u4e2d\u660e\u786e\u6307\u51fa\uff0c\u6211\u4eec\u6709\u4e00\u4e2a\u4ea7\u54c1\u3002\u4e3a\u6b64\uff0c\u8bf7\u8f6c\u5230\u201cProducts & A\/B Tests \u2192 Products\u201d\uff0c\u5e76\u70b9\u51fb\u201cCreate product\u201d\u3002 <\/p>\n\n\n\n \u60a8\u5728\u8fd9\u91cc\u9700\u8981\u660e\u786e\u4ea7\u54c1\u540d\u79f0\uff0c\u5373\u8be5\u8ba2\u9605\u5728Adapty\u6307\u793a\u677f\u4e2d\u663e\u793a\u7684\u6837\u5b50\u3002 <\/p>\n\n\n\n \u60a8\u8fd8\u9700\u8981\u660e\u786e\u82f9\u679c\u5e94\u7528\u5546\u5e97\u4ea7\u54c1ID\u548c\u5b89\u5353\u5e02\u573a\u4ea7\u54c1ID\u3002\u5982\u679c\u9700\u8981\uff0c\u53ef\u4ee5\u660e\u786e\u7528\u4e8e\u5206\u6790\u7684\u5468\u671f\u548c\u540d\u79f0\u3002\u70b9\u51fb\u201cSave\u201d\u3002<\/p>\n\n\n\n \u73b0\u5728\uff0c\u60a8\u9700\u8981\u8bbe\u8ba1\u4e00\u4e2a\u4ed8\u8d39\u5899\uff0c\u8fd9\u662f\u4e2a\u9650\u5236\u7528\u6237\u4f7f\u7528\u9ad8\u7ea7\u529f\u80fd\uff0c\u5e76\u4e3a\u4ed6\u4eec\u63d0\u4f9b\u8ba2\u9605\u670d\u52a1\u63d0\u793a\u7684\u8fc7\u6ee4\u5c4f\u3002\u60a8\u9700\u8981\u5c06\u60a8\u6240\u521b\u9020\u7684\u4ea7\u54c1\u6dfb\u52a0\u5230\u4ed8\u8d39\u5899\u4e2d\u3002\u4e3a\u6b64\uff0c\u60a8\u9700\u8981\u70b9\u51fb\u540c\u4e00\u90e8\u5206\u4e2d\u7684\u201cCreate paywall\u201d\uff08Products & A\/B Tests \u2192 Paywalls\uff09\u3002<\/p>\n\n\n\n \u70b9\u51fb\u201cSave & publish\u201d\u3002<\/p>\n\n\n\n \u5173\u4e8e\u914d\u7f6e\u5927\u6982\u5c31\u662f\u8fd9\u6837\u3002\u73b0\u5728\uff0c\u6211\u4eec\u5c06\u6dfb\u52a0\u4f9d\u8d56\u9879\u5e76\u7f16\u5199\u4ee3\u7801\u3002<\/p>\n\n\n\n 1. \u9996\u5148\uff0c\u6dfb\u52a0\u4f9d\u8d56\u9879\uff1a<\/p>\n\n\n\n\n
\u5728\u672c\u6587\u4e2d<\/h2>\n\n\n\n
\n
\u914d\u7f6e\u82f9\u679c\u5546\u5e97
\u914d\u7f6e\u5b89\u5353\u5e02\u573a<\/li>\n\n\n\n\u4e3a\u4ec0\u4e48Expo\u4e0d\u80fd\u7528\u4e8eReact Native\u5e94\u7528\u4e2d\u7684\u5e94\u7528\u5185\u8d2d\u4e70\u529f\u80fd<\/h3>\n\n\n\n
\u521b\u5efa\u5f00\u53d1\u4eba\u5458\u8d26\u6237<\/h2>\n\n\n\n
\n
\u914d\u7f6eAdapty<\/h2>\n\n\n\n
<\/figure>\n\n\n\n
\n
<\/figure>\n\n\n\n
<\/figure>\n\n\n\n
<\/figure>\n\n\n\n
\u6dfb\u52a0\u8ba2\u9605<\/h3>\n\n\n\n
<\/figure>\n\n\n\n
\u521b\u5efa\u4ed8\u8d39\u5899<\/h2>\n\n\n\n
\n
<\/figure>\n\n\n\n
\u5b89\u88c5react-native-adapty<\/h2>\n\n\n\n